通过添加列然后更新现有数据合并两个数据框

时间:2018-08-03 21:20:26

标签: python pandas dataframe pandas-groupby data-analysis

给定两个数据帧df1df2,我想获取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')

这不必要地创建双打,我什至更新

1 个答案:

答案 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值“更新”。