python - 数据框左合并与不同列中的匹配键
问题描述
我必须合并两个DataFrame
,下面有一个左连接 - 插图。
问题是匹配键分布在 3 列中。为了使挑战更加复杂,一些行(#4)将有两次相同的匹配键!有人建议我使用Melt
,但它只适用于 Right Join。
最好的方法是什么?
将熊猫导入为 pd
data1 = {'key1' : ['abc','aa','aa','sdf'],
'key2' : ['aa','efg','aa', 'sdf'],
'key3' : ['aa','aa','xyz', 'aa']
}
data2 = {'key': ['abc','efg', 'xyz', 'sdf'],
'msg' : ['happy','mad','smile','great']}
df1= pd.DataFrame(data1)
df2= pd.DataFrame(data2)
解决方案
让我们尝试使用相应的 fromstack
重塑键,最后df1
使用on和聚合:map
msg
df2
groupby
level=0
first
df1['msg'] = df1.stack().map(df2.set_index('key')['msg']).groupby(level=0).first()
key1 key2 key3 msg
0 abc aa aa happy
1 aa efg aa mad
2 aa aa xyz smile
3 sdf sdf aa great
推荐阅读
- wordpress - 在 Wordpress.com 页面中嵌入外部网站
- node.js - 在 Express.js 中渲染之前定义静态文件
- python - RuntimeError importing tensorflow 在第二次导入时消失
- excel - Excel宏全局子调整
- javascript - 如何导入 @orange-games/phaser-ads 节点模块?
- java - Docker(Spring Boot 或 Thorntail)和 Keycloak
- c# - TemplateField ItemTemplate 仅在回发后显示
- php - 使用 CI 中的加载数据 InFile 上传 500000 条记录,但有时并非所有记录都插入
- javascript - 如何使用预填充数据验证文本区域?
- android - 当应用程序在后台时在推送通知中获取操作