给定两个数据帧df1
和df2
,我想获取df2
的最后一列,并根据列df1
将其添加到'a'
都有。
对于df2
中的每一行,如果df1['a']
有,那么我想将其添加到新列中。 df1['a']
中不在df2['a']
中的行设置为N / A。如果df2['a']
中有一个值不在df1['a']
中,我们将忽略它
此外,在添加列时,我希望将df1['b']
和df1['c']
的值更新为df2['b']
和df2['c']
的值。
第一部分,这是我所获得的最好的
df1 = df1.merge(df2, how='outer', on='a')
df1 = df1.drop_duplicates('a')
这不必要地创建双打,我什至更新
答案 0 :(得分:0)
尝试使用左联接:
import pandas as pd
df1 = pd.DataFrame({'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]})
df2 = pd.DataFrame({'a':[2,3,4],'b':[5,6,7],'c':[8,9,10],'new_column_from_df2':[11,12,13]})
df1['a'].to_frame().merge(df2, how='left', on='a')
输出:
Out[190]:
a b c new_column_from_df2
0 1 NaN NaN NaN
1 2 5.0 8.0 11.0
2 3 6.0 9.0 12.0
请注意,由于df2
的最后一行不在df1['a']
中,因此将被忽略/排除。 'b'
和'c'
列已使用df2
值“更新”。