我有两个数据框old
和new
。两者都有相同的列。
我希望通过索引
old
但不在new
old
行
old
中的数据更新new
处的行。在pandas
中有没有有效的方法?我找到了update(),它完成了第二步。但是,它不会添加行。我可以在索引上使用一些设置逻辑来完成第一步。但是,这似乎并不高效。这两项操作的最佳方法是什么?
old
a b
0 1 1
1 3 3
new
a b
1 1 2
2 1 2
result
a b
0 1 1
1 1 2
2 1 2
答案 0 :(得分:2)
您可以先找到两个数据帧的公共索引,然后首先找到第二个索引的值。然后你会得到combine_first
的结果:
In [35]: df1
Out[35]:
a b
0 1 1
1 3 3
In [36]: df2
Out[36]:
a b
1 1 2
2 1 2
idx = df1.index & df2.index
df1.loc[idx, :] = df2.loc[idx, :]
df1 = df1.combine_first(df2)
In [39]: df1
Out[39]:
a b
0 1 1
1 1 2
2 1 2
答案 1 :(得分:0)
您可以使用df.reindex()
方法
old = old.reindex(index=new.index)