我有两个 pandas 数据框。一个包含文本,另一个包含我想在文本中搜索和替换的一组术语。我创建了一个循环,它能够用术语替换文本中的每个单词,但是它非常慢,特别是考虑到它正在处理大型语料库。
我的问题是: 是否有更有效的解决方案可以复制我的方法?
示例文本数据框:
d = {'ID': [1, 2, 3], 'Text': ['here is some random text', 'random text here', 'more random text']}
text_df = pd.DataFrame(data=d)
术语数据框示例:
d = {'Replace_item': ['<RANDOM_REPLACED>', '<HERE_REPLACED>', '<SOME_REPLACED>'], 'Text': ['random', 'here', 'some']}
replace_terms_df = pd.DataFrame(data=d)
当前解决方案示例:
def find_replace(text, terms):
for _, row in terms.iterrows():
term = row['Text']
item = row['Replace_item']
text.Text = text.Text.str.replace(term, item)
return text
find_replace(text_df, replace_terms_df)
如果以上任何内容需要澄清,请告诉我。谢谢,
最佳答案
使用zip
+ str.replace
在三列上,并立即将结果分配给列,将时间减少了 50%(使用 %timeit
,约 400us 减少到约 200us):
text_df['Text'] = [z.replace(x, y) for (x, y, z) in zip(replace_terms_df.Text, replace_terms_df.Replace_item, text_df.Text)]
关于python - 字符串替换为多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50079096/