我是 pandas 的新手,似乎无法使用合并功能:
>>> left >>> right
a b c a c d
0 1 4 9 0 1 7 13
1 2 5 10 1 2 8 14
2 3 6 11 2 3 9 15
3 4 7 12
使用 a 列的左连接,我想通过连接键更新公共(public)列。注意 c 列中的最后一个值来自 LEFT 表,因为没有匹配项。
>>> final
a b c d
0 1 4 7 13
1 2 5 8 14
2 3 6 9 15
3 4 7 12 NAN
我应该如何使用 Pandas 合并功能来做到这一点?谢谢。
最佳答案
您可以在 left
和 right
之间使用 merge()
和 how='left'
在 >'a'
列。
In [74]: final = left.merge(right, on='a', how='left')
In [75]: final
Out[75]:
a b c_x c_y d
0 1 4 9 7 13
1 2 5 10 8 14
2 3 6 11 9 15
3 4 7 12 NaN NaN
将 c_y
中的 NaN
值替换为 c_x
值
In [76]: final['c'] = final['c_y'].fillna(final['c_x'])
In [77]: final
Out[77]:
a b c_x c_y d c
0 1 4 9 7 13 7
1 2 5 10 8 14 8
2 3 6 11 9 15 9
3 4 7 12 NaN NaN 12
删除不需要的列,你就有了结果
In [79]: final.drop(['c_x', 'c_y'], axis=1)
Out[79]:
a b d c
0 1 4 13 7
1 2 5 14 8
2 3 6 15 9
3 4 7 NaN 12
关于python - Pandas 离开并更新现有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30045086/