使用额外的列更新 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 索引,这些对象支持类似集合的操作例如差、并、交。)
在 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 索引,这些对象支持类似集合的操作例如差、并、交。)