我有以下 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
以反射(reflect)更改?这是替换函数还是合并函数?
输出:
Name Status Data
0 Mike no 345
1 Bob no 456
2 Ted yes 789
3 Fred no 123
最佳答案
使用更新
和合并
注意:我将 df
限制为我想用双括号合并的列,以确保我的结果保持数据帧 df[['Name']]
。然后我使用 dfn
进行左合并以添加我想要更新的列。 'left'
确保我获得与 df
相同的索引,并且可以毫无问题地愉快地更新
。
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
关于python - Pandas 有条件地替换或更新整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49801834/