我有以下df
:
Name Status Data
0 Mike yes 123
1 Bob no 456
2 Ted yes 789
3 Fred yes
现在我有一个新的df
:
0 Mike no 345
1 Fred no 123
如何更新第一个df
以反映更改?这是替换或加入功能吗?
输出:
Name Status Data
0 Mike no 345
1 Bob no 456
2 Ted yes 789
3 Fred no 123
答案 0 :(得分:6)
使用update
和merge
注意:我将df
限制为我要用双括号合并的列,以确保我的结果保持数据帧df[['Name']]
。然后我与dfn
进行左合并以添加我想要更新的列。 'left'
确保我获得与df
相同的索引,并且可以愉快update
而没有任何问题。
df.update(df[['Name']].merge(dfn, 'left'))
df
Name Status Data
0 Mike no 345.0
1 Bob no 456.0
2 Ted yes 789.0
3 Fred no 123.0
如果要将'Name'
用作索引,请将其设置为索引。
df = df.set_index('Name')
dfn = dfn.set_index('Name')
然后变成
pd.DataFrame.combine_first
流水线副本
dfn.combine_first(df)
Status Data
Name
Bob no 456.0
Fred no 123.0
Mike no 345.0
Ted yes 789.0
pd.DataFrame.update
到位
df.update(dfn)
df
Status Data
Name
Bob no 456.0
Fred no 123.0
Mike no 345.0
Ted yes 789.0