我有一个数据帧df1
id value
1 100
2 100
3 100
4 100
5 100
我有另一个数据帧df2
id value
2 50
5 30
我想用df1中的值替换df2中id的这些值。 最终修改df1:
id value
1 100
2 50
3 100
4 100
5 30
我将在循环中运行它。我是df2,会不时地改变(df1,外循环)
改变价值观的最佳方式是什么?
答案 0 :(得分:1)
使用combine_first
,但在id
s DataFrame
中id
之前set_index
:
注意:df2
中的df = df2.set_index('id').combine_first(df1.set_index('id')).reset_index()
print (df)
id value
0 1 100.0
1 2 50.0
2 3 100.0
3 4 100.0
4 5 30.0
列必须是唯一的。
{{1}}
答案 1 :(得分:1)
基于loc
的解决方案 -
i = df1.set_index('id')
j = df2.set_index('id')
i.loc[j.index, 'value'] = j['value']
df2 = i.reset_index()
df2
id value
0 1 100
1 2 50
2 3 100
3 4 100
4 5 30