我正在尝试根据另一个数据框(dfB
)的值向数据框(dfA
)添加新列:
最初的回答:
s = dfA['value'].tolist()
dfB['value'] = dfB['text_bod'].str.contains('|'.join(s))
这个设置下能使用 progress_map
吗?
dfB['value'] = dfB['text_bod'].progress_map(func)
或者有其他方法可以实现 tqdm 吗?
使用 FlashText 的替代方法:
注:Original Answer 翻译为“最初的回答”。from flashtext import KeywordProcessor
s = dfA['value'].tolist()
processor = KeywordProcessor()
processor.add_keywords_from_list(s)
dfB['value'] = dfB['text_bod'].progress_map(lambda x: processor.extract_keywords(x))
dfB['text_bod'].progress_map(lambda x: x if re.search('|'.join(s), x) else np.nan)
? - undefineddfA['value']
中提取单个匹配值,并将其放入dfB['value']
中。 - undefinedtest['value'] = test['communication_body'].progress_map(lambda x: re.search('|'.join(s), x).group(0) if re.search('|'.join(s), x) else np.nan)
,但对于多个匹配值,groups(0)
不起作用,嗯嗯。 - undefinedre.search('|'.join(s), x)
赋值给一个变量? - undefined