1 回答

TA貢獻1880條經(jīng)驗 獲得超4個贊
首先使用DataFrame.explode
(pandas 0.25 +)由Series.str.split
創(chuàng)建的列表,因此可以使用DataFrame.merge
:Labels
df1 = match_df.assign(Label = match_df['Labels'].str.split('; ')).explode('Label')
df = source_df.merge(df1, on='Label')
print (df)
Total Label Labels
0 315.59 id|1234 id|1234; id|4957
1 241.17 id|2345 id|2345; id|9342
2 165.87 id|2333 id|2333; id|8321; id|9001
最后一列 :Label
df['Label'] = df.pop('Labels')
print (df)
Total Label
0 315.59 id|1234; id|4957
1 241.17 id|2345; id|9342
2 165.87 id|2333; id|8321; id|9001
另一個具有Series.map和字典理解的解決方案:
d = {y: x for x in match_df['Labels'] for y in x.split('; ')}
source_df['Label'] = source_df['Label'].map(d)
print (source_df)
Total Label
0 315.59 id|1234; id|4957
1 241.17 id|2345; id|9342
2 165.87 id|2333; id|8321; id|9001
添加回答
舉報