Python 比较pandas列中的字符串与另一个pandas列中的字符串

Python 比较pandas列中的字符串与另一个pandas列中的字符串,python,database,string,pandas,search,Python,Database,String,Pandas,Search,我有以下几只熊猫 df: colA abc dbe fec ghi jkl ref sgsh hjo df2: colB colC hjo 12 hhh chk 14 eee abc 17 我想将df中每列的字符串中的单词与df2的colB中字符串中的每个单词进行比较。如果找到匹配项,我想将相应的colC添加到df1。如果任何单词与colB匹配,它应该停止并移动到下一列 结果: newdf: co

我有以下几只熊猫

df:


colA

abc dbe fec
ghi jkl ref
sgsh hjo 


df2:


colB        colC

hjo              12
hhh chk          14
eee abc          17
我想将df中每列的字符串中的单词与df2的colB中字符串中的每个单词进行比较。如果找到匹配项,我想将相应的colC添加到df1。如果任何单词与colB匹配,它应该停止并移动到下一列

结果:

newdf:


colA             colC

abc dbe fec       17
ghi jkl ref       none
sgsh hjo          12
最快的方法是什么(大数据集)

如解决方案中所述

pat:  

 '(Absolute Plumbing|D\xc3\xa9jeuner Eggcetera|Ivy Garcia, LMT|Native Bloom Landscape and Design|Seay\'s|Thulasi Kitchen|Liyuen|Viva Photo Booth|Cleopatra Internet Cafe|R&B\'s Pizza Place|Hilton Toronto/Markham Suites Conference Centre & Spa|Hegel Yoga|Boonda\'s|San Tan Aikido Kokikai|Mega Motors|Blue Sky Nails & Spa|Restaurant Cinq Epices|North East Auto Credit|Blind Tiger|T & S Towing' 
使用以下命令:

制作参考数据库词典:

d = dict(zip(df2.colB,df2.colC))
#{'hjo': 12, 'hhh chk': 14, 'abc': 17}
pat = r'({})'.format('|'.join(d.keys()))
#'(hjo|hhh chk|abc)'
创建模式:

d = dict(zip(df2.colB,df2.colC))
#{'hjo': 12, 'hhh chk': 14, 'abc': 17}
pat = r'({})'.format('|'.join(d.keys()))
#'(hjo|hhh chk|abc)'
使用和

编辑每行中的转义字符和空格匹配*(不确定是否是最佳方式,但有效)*

考虑到
df2
是:

     colB  colC
0      hjo    12
1  hhh ref    14
2      abc    17
df1与您的示例相同:

    colA
0   abc dbe fec
1   ghi jkl ref
2   sgsh hjo

import re
df_split=pd.DataFrame(df2.colB.str.split(' ').tolist(),index=df2.colC).stack().reset_index(0).rename(columns={0:'colB'}).reindex(df2.columns,axis=1)
print(df_split)

  colB  colC
0  hjo    12
0  hhh    14
1  ref    14
0  abc    17
您会注意到,具有空格的列被转换为具有相同值的行


@JerryGeorge请尝试“编辑”下的“图案”部分。@JerryGeorge请检查“编辑”下的部分