使用额外的列更新Pandas DataFrame?

时间:2015-01-28 06:08:24

标签: python pandas

在Pandas中,您可以使用其他数据框中的数据更新数据框。

X = pd.DataFrame({'a':[1,2,3,8],'b':[2,4,6,4]})
Y = pd.DataFrame({'b':[10,20,30,40],'c':[5,6,7,8]})
X.update(Y)
   a   b
0  1  10
1  2  20
2  3  30
3  8  40

有没有办法做到这一点,以便包含Y的额外列? e.g。

X.update(Y)
   a   b  c
0  1  10  5
1  2  20  6
2  3  30  7
3  8  40  8

在其他likely candidate methods中,X.join(Y)想要保留两个'b'列,X.merge(Y)返回空DF,X.merge(Y, how='right')返回'a'列充满NAN。

显然我可以通过加入然后删除列来实现这一点,但它会变得混乱并且内存很耗尽。

1 个答案:

答案 0 :(得分:2)

如果DataFrames已经具有相同的索引(如您的示例所示),则可以在不进行任何更新或加入的情况下执行此操作:

>>> pandas.concat([X[X.columns - Y.columns], Y], axis=1)
    a   b  c
0  1  10  5
1  2  20  6
2  3  30  7
3  8  40  8

这个想法是你只想要X的唯一列,加上Y中的所有列。(DataFrame columns属性给出了一个pandas索引,这些对象支持类似集合的操作,如差异,联合,和交集。)