熊猫:两个数据帧的组合

时间:2016-03-30 12:52:18

标签: python pandas

我有两个数据框oldnew。两者都有相同的列。

我希望通过索引

  • 将行添加到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

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)