python - 如何将一列从熊猫数据框中复制到另一列,同时匹配两者中公共列的值?
问题描述
我有以下 2 个 dfs。我想将 df2 的 C 列复制到 df1 的 C 列,其中 df1 的 A 和 B 列与 df2 的 A 和 B 列匹配。
df1
A B C F G ...
1 12 NaN 52 50
2 14 NaN 62 60
3 15 NaN 72 70
2 14 NaN 82 80
df2
A B C D E ...
2 14 0 abc xyz
3 15 1 efg pqr
1 12 1 hij stu
现在我希望我的 df1 看起来像:
df1
A B C F G ...
1 12 1 52 50
2 14 0 62 60
3 15 1 72 70
2 14 0 82 80
我怎样才能在熊猫中实现这一点?任何帮助,将不胜感激。
解决方案
首先删除列C
,然后DataFrame.merge
仅通过过滤列进行左连接 -A
列B
用于连接并且C
是新添加的列,最后按原始列重新df1
排序DataFrame.reindex
:
df = (df1.drop('C', 1)
.merge(df2[['A','B', 'C']], on=['A','B'], how='left')
.reindex(columns=df1.columns))
print (df)
A B C F G
0 1 12 1 52 50
1 2 14 0 62 60
2 3 15 1 72 70
3 2 14 0 82 80
推荐阅读
- javascript - javascript:按模式查找并替换
- python - 如何将所有元素的类型更改为单一类型(从 int 到 str)?
- sql - 在插入具有常量值的行时,选择常量与使用 VALUES 更有效吗?
- oracle - 是否可以更改 Oracle APEX 交互式报表订阅中的电子邮件文件附件名称?
- python - 使用 Opencv Python 多线程录制视频
- service-worker - serviceworker.js 是否需要从根目录加载
- javascript - 如何使用文件的下载链接上传文件
- coldfusion - 应用程序范围的变量正在为每个请求刷新
- reactjs - 如何在网格 css 布局中获得 colspan=2?
- python-3.x - 在 tkinter 画布的分层架构中添加图像