python - 如何将两个数据框与一列中的多个元素合并
问题描述
我尝试基于由元素组成的数据框和具有唯一数据框的其他数据框合并一个新的数据框。
数据框1:
col1
0 A1
1 A1,A5
2 A1
3 A2,A9,A3
4 A3
数据框2:
column1 column2
0 A1 DE
1 A2 DZ
2 A3 DA
3 A4 AC
4 A5 RC
5 A6 UC
6 A7 TC
7 A8 VC
8 A9 WC
9 A10 XC
最终数据框:
col1 column1 column2
0 A1 A1 DE
1 A1,A5 A1 DE
2 A1,A5 A5 RC
2 A1 A1 DE
3 A2,A9,A3 A2 DZ
4 A2,A9,A3 A9 WC
5 A2,A9,A3 A3 DA
6 A3 A3 DA
解决方案
由带有和左连接DataFrame.explode
的拆分值使用:DataFrame.merge
df = (df1.assign(column1 = df1['col1'].str.split(','))
.explode('column1')
.merge(df2, on='column1',how='left'))
print (df)
col1 column1 column2
0 A1 A1 DE
1 A1,A5 A1 DE
2 A1,A5 A5 RC
3 A1 A1 DE
4 A2,A9,A3 A2 DZ
5 A2,A9,A3 A9 WC
6 A2,A9,A3 A3 DA
7 A3 A3 DA
推荐阅读
- php - PHP 语法错误,意外的 'prefix' (T_STRING),需要 ']'
- android - Android 应用卡在白色空白屏幕上,看起来像是 Facebook Android SDK 4.36.0 问题
- actions-on-google - 如何使用在以前删除的项目中使用的调用?
- javascript - Angular Material Badge:让 MatBadge 包含图标而不是文本?
- java - 使用 HTTP GET 测试端点
- jquery - 使用 jQuery ajax 发送包含空数组的对象失败
- angular - 角度不同模块数组的类型是什么?
- php - 我想使用 fpdf 增加特定的列宽
- python - 收到错误“矢量大小 216 太大”
- angular - Frappe Gantt 与 Angular 5 的集成