python - 字符串替换为多个项目

标签 python pandas nlp

我有两个 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/

相关文章:

python - 为什么在使用 Python/C API 时会出现此段错误?

python - pandas 中的多索引数据帧的分组和求和

machine-learning - 检测一堆文本中的噪声数据有哪些不同的策略?

java - 情绪分析与情绪分析

Python NLTK 解释一个固定的句子模式并将其标记化

python - os.read() 给出 OSError : [Errno 22] Invalid argument when reading large data

python - 使用自定义文件名进行 Airflow 记录?

python - 在文件夹层次结构中构建文件菜单

python - Pandas 添加列级别,这会增加总列数

python - 如何在已展平的数据框中展平一列嵌套 json 对象