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')