Python 更新dataframe并添加新列
问题: 如果另一个数据帧的列没有出现在原始数据帧中,如何通过另一个数据帧的行更新另一个数据帧,同时添加新列 示例: 我有两个数据帧:Python 更新dataframe并添加新列,python,pandas,Python,Pandas,问题: 如果另一个数据帧的列没有出现在原始数据帧中,如何通过另一个数据帧的行更新另一个数据帧,同时添加新列 示例: 我有两个数据帧: original_df = pd.DataFrame([{'name' : 'ruben','age' : 25},{'name' : 'henk', 'age' : 26},{'name' : 'gijs', 'age' : 20}],index=[0,1,2]) name age 0 ruben 25 1 henk 26 2 gi
original_df = pd.DataFrame([{'name' : 'ruben','age' : 25},{'name' : 'henk', 'age' : 26},{'name' : 'gijs', 'age' : 20}],index=[0,1,2])
name age
0 ruben 25
1 henk 26
2 gijs 20
及
我想用update_df的行更新原始的_df。如果它们都包含相同的行,我可以按如下方式执行:
original_df.update(update_df)
然而,这导致:
name age
0 ruben 25
1 henk 27
2 gijs 21
如何确保新列也已添加,以便获得此结果:
name age hobby
0 ruben 25
1 henk 27 football
2 gijs 21 music
先谢谢你
编辑答案:此问题被标记为重复问题(通过链接有关合并101的一般问题),但不要跟随链接。正确答案在评论中:
update_df.combine_first(original_df)
您可以使用左连接:“左连接,也称为左外部连接,返回包含左数据帧的所有行的数据帧”()。还有一个关于堆栈溢出的好线程:
您可以使用左连接:“左连接,也称为左外部连接,返回包含左数据帧的所有行的数据帧”()。还有一个关于堆栈溢出的好线程:
update\u df.combines\u first(原始df)
?@HenryYik这似乎有效,谢谢。请随意添加它作为答案,这样我就可以接受它了。update\u df.combines\u first(original\u df)
?@HenryYik这似乎有效,谢谢。请随意添加它作为答案,这样我就可以接受它谢谢你的回答。但是,这将创建两列:age_x和age_y,而不是一个更新的列。谢谢您的回答。但是,这将创建两列:age_x和age_y,而不是一个更新的列。
update_df.combine_first(original_df)
original_df = pd.DataFrame([{'name' : 'ruben','age' : 25},{'name' : 'henk', 'age' : 26},{'name' : 'gijs', 'age' : 20}],index=[0,1,2])
update_df = pd.DataFrame([{'name' : 'henk','age' : 27,'hobby' : 'football'},{'name' : 'gijs', 'age' : 21,'hobby' : 'music'}],index=[1,2])
df_merged = original_df.merge(update_df, on = 'name', how = 'left')