我尝试合并一个基于元素组成的数据帧的新数据帧和一个具有唯一数据帧的其他数据帧。
数据帧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.merge
和左联接的拆分值使用DataFrame.explode
:
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