如何将 pandas.Series.str.contains 与 tqdm 进度图一起使用?
How to use pandas.Series.str.contains with tqdm progress map?
我正在尝试根据另一个数据框 (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 的替代方法:
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))
不知道 str.contains
方法,但您可以将 progress_map
与执行完全相同的回调一起使用,但使用 re.search
:
import re
dfB['value'] = dfB['text_bod'].progress_map(
lambda x: bool(re.search('|'.join(s), x))
)
作为函数,您可以使用
def extract(x, p):
m = p.search(x)
if m:
return m.groups(0)
return np.nan
p = re.compile('|'.join(s))
dfB['value'] = dfB['text_bod'].progress_map(lambda x: extract(x, p))
这应该比 lambda 更灵活。
我正在尝试根据另一个数据框 (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 的替代方法:
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))
不知道 str.contains
方法,但您可以将 progress_map
与执行完全相同的回调一起使用,但使用 re.search
:
import re
dfB['value'] = dfB['text_bod'].progress_map(
lambda x: bool(re.search('|'.join(s), x))
)
作为函数,您可以使用
def extract(x, p):
m = p.search(x)
if m:
return m.groups(0)
return np.nan
p = re.compile('|'.join(s))
dfB['value'] = dfB['text_bod'].progress_map(lambda x: extract(x, p))
这应该比 lambda 更灵活。