Pandas concate 2个数据帧,具有第一个键,而不是另一个键
我有两个数据帧Pandas concate 2个数据帧,具有第一个键,而不是另一个键,pandas,numpy,Pandas,Numpy,我有两个数据帧 raw_data = { 'subject_id': ['1', '2', '3', '4', '5'], 'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']} df_a = pd.DataFrame(raw_data, columns =
raw_data = {
'subject_id': ['1', '2', '3', '4', '5'],
'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']}
df_a = pd.DataFrame(raw_data, columns = ['subject_id', 'first_name', 'last_name'])
df_a
及
我希望输出如下
subject_id first_name last_name
0 1 Alex Anderson
1 2 Amy Ackerman
2 3 Allen Ali
3 4 Alice Aoni
4 5 Ayoung Atiches
2 6 Bran Balwner
3 7 Bryce Brice
4 8 Betty Btisan
我想连接df_a的所有记录,并且只连接df_b中不在df_a中的那些记录
我能做到这一点,通过下面的代码
import pandas as pd
import numpy as np
mask=np.logical_not(df_b['subject_id'].isin(df_a['subject_id']))
pd.concat([df_a,df_b.loc[mask]])
在函数concat和merge中是否有其他直接可用的简短方法。
请帮助..
删除重复项
保留第一对重复项的默认值
pd.concat([df_a,df_b]).drop_duplicates(['subject_id'])
Out[1015]:
subject_id first_name last_name
0 1 Alex Anderson
1 2 Amy Ackerman
2 3 Allen Ali
3 4 Alice Aoni
4 5 Ayoung Atiches
2 6 Bran Balwner
3 7 Bryce Brice
4 8 Betty Btisan
可以将combine_first与set_index()一起使用 pd.concat([df_a,df_b])。删除重复项()
pd.concat([df_a,df_b]).drop_duplicates(['subject_id'])
Out[1015]:
subject_id first_name last_name
0 1 Alex Anderson
1 2 Amy Ackerman
2 3 Allen Ali
3 4 Alice Aoni
4 5 Ayoung Atiches
2 6 Bran Balwner
3 7 Bryce Brice
4 8 Betty Btisan
new_df = df_a.set_index('subject_id').combine_first(df_b.set_index('subject_id'))\
.reset_index()
subject_id first_name last_name
0 1 Alex Anderson
1 2 Amy Ackerman
2 3 Allen Ali
3 4 Alice Aoni
4 5 Ayoung Atiches
5 6 Bran Balwner
6 7 Bryce Brice
7 8 Betty Btisan