在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。
显然我可以通过加入然后删除列来实现这一点,但它会变得混乱并且内存很耗尽。
答案 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索引,这些对象支持类似集合的操作,如差异,联合,和交集。)