pandas:用字典替换不适用于句子字符串
pandas: replace with a dictionary does not work with string of sentences
我有一个数据框如下:
import pandas as pd
df = pd.DataFrame({'text':['Lary Page is visiting today',' His boss, Maria Jackson is here.']})
我已经提取了下面列表中的名称。并使用 faker 库创建等于 person_name 列表的 len 的假名,并从列表中创建字典。
from faker import Faker
fake = Faker()
person_name = ['Lary Page', 'Maria Jackson']
fake_name= [fake.name() for n in range(len(person_name))]
name_dict = dict(zip(person_name, fake_name ))
现在我想用字典替换数据框中的它们,但是 returns 一个错误。
df.text.str.replace(name_dict)
我想要的输出:(例如)
print(df)
Angela Mindeston is visiting today
His boss, Emanuel Smith is here.
对 Series.str.replace
or Series.replace
使用 lambda 回调:
regex = '|'.join(r"\b{}\b".format(x) for x in name_dict.keys())
df['text1'] = df.text.str.replace(regex, lambda x: name_dict[x.group()], regex=True)
df['text2'] = df.text.replace(name_dict, regex=True)
print (df)
text text1 \
0 Lary Page is visiting today Gary Cox is visiting today
1 His boss, Maria Jackson is here. His boss, Mr. George Jones is here.
text2
0 Gary Cox is visiting today
1 His boss, Mr. George Jones is here.
我有一个数据框如下:
import pandas as pd
df = pd.DataFrame({'text':['Lary Page is visiting today',' His boss, Maria Jackson is here.']})
我已经提取了下面列表中的名称。并使用 faker 库创建等于 person_name 列表的 len 的假名,并从列表中创建字典。
from faker import Faker
fake = Faker()
person_name = ['Lary Page', 'Maria Jackson']
fake_name= [fake.name() for n in range(len(person_name))]
name_dict = dict(zip(person_name, fake_name ))
现在我想用字典替换数据框中的它们,但是 returns 一个错误。
df.text.str.replace(name_dict)
我想要的输出:(例如)
print(df)
Angela Mindeston is visiting today
His boss, Emanuel Smith is here.
对 Series.str.replace
or Series.replace
使用 lambda 回调:
regex = '|'.join(r"\b{}\b".format(x) for x in name_dict.keys())
df['text1'] = df.text.str.replace(regex, lambda x: name_dict[x.group()], regex=True)
df['text2'] = df.text.replace(name_dict, regex=True)
print (df)
text text1 \
0 Lary Page is visiting today Gary Cox is visiting today
1 His boss, Maria Jackson is here. His boss, Mr. George Jones is here.
text2
0 Gary Cox is visiting today
1 His boss, Mr. George Jones is here.