使用额外的列更新 Pandas DataFrame?

Update Pandas DataFrame with extra columns?

在 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 中的额外列包括在内?例如

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) return 一个空的 DF,X.merge(Y, how='right') returns 'a' 列充满 NAN。

显然我可以通过加入然后删除列来做到这一点,但它变得混乱并且需要内存。

如果 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 索引,这些对象支持类似集合的操作例如差、并、交。)