Emi*_*mil 5 python replace list pandas
我有一个all_transcripts包含近 300 万行的大型数据集。其中一栏msgText包含书面消息。
>>> all_transcripts['msgText']
['this is my first message']
['second message is here']
['this is my third message']
Run Code Online (Sandbox Code Playgroud)
此外,我有一个包含 200 多个单词的列表,称为gemeentes。
>>> gemeentes
['first','second','third' ... ]
Run Code Online (Sandbox Code Playgroud)
如果此列表中的某个单词包含在 中msgText,我想用另一个单词替换它。为此,我创建了该函数:
def replaceCity(text):
newText = text.replace(plaatsnaam, 'woonplaats')
return str(newText)
Run Code Online (Sandbox Code Playgroud)
所以,我想要的输出如下:
['this is my woonplaats message']
['woonplaats message is here']
['this is my woonplaats message']
Run Code Online (Sandbox Code Playgroud)
目前,我正在循环遍历列表,并对列表中的每个项目应用该replaceCity函数。
for plaatsnaam in gemeentes:
global(plaatsnaam)
all_transcripts['filtered_text'] = test.msgText.apply(replaceCity)
Run Code Online (Sandbox Code Playgroud)
然而,这需要很长时间,因此似乎效率不高。有没有更快的方法来执行此任务?
这篇文章(查找多个字符串匹配的算法)类似,但我的问题不同,因为:
这里只有一小段文本,而我有一个包含许多不同行的数据集
我想要替换单词,而不仅仅是找到单词。
假设all_transcripts是一只熊猫DataFrame:
all_transcripts['msgText'].str.replace('|'.join(gemeentes),'woonplaats')
Run Code Online (Sandbox Code Playgroud)
例子:
all_transcripts = pd.DataFrame([['this is my first message'],
['second message is here'],
['this is my third message']],
columns=['msgText'])
gemeentes = ['first','second','third']
all_transcripts['msgText'].str.replace('|'.join(gemeentes),'woonplaats')
Run Code Online (Sandbox Code Playgroud)
输出
0 this is my woonplaats message
1 woonplaats message is here
2 this is my woonplaats message
Run Code Online (Sandbox Code Playgroud)