从其他数据帧熊猫中按值更改一个数据帧的值

时间:2017-12-19 06:24:53

标签: python pandas dataframe

我有一个数据帧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,外循环)

改变价值观的最佳方式是什么?

2 个答案:

答案 0 :(得分:1)

使用combine_first,但在id s DataFrameid之前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