python - Pandas 离开并更新现有列

标签 python pandas

我是 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 合并功能来做到这一点?谢谢。

最佳答案

您可以在 leftright 之间使用 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/

相关文章:

python - 根据另一列的值在 Pandas 中创建新列

python - 更改 Dominate 表中单元格的样式或背景 (Python)

python - 如何在 python 中捕获所有旧式类异常?

python - 无法使用 Pint 单位修饰类方法

python - 计算文本中的空格(将连续的空格视为一个)

python - Pandas 系列重复 n 次并更改列值

pandas - Facebook-Prophet 每月数据交叉验证 - 解决方法 : Pandas timedelta does not support Month and Years

python - Pandas - 获取每个用户的周平均值

python - Pandas - 如何根据条件创建新列

python - 减去 Pandas Dataframe 中的条目并存储在新列中