这是我的txt文件,名为replacer.txt
keyword_origin, keyword_destinantion
topu,topup
atmstrbca,atm bca
这就是我想要的
id keyword
1 transfer atmstrbca
2 topu bank
3 topup bank
我的预期输出
id keyword
1 transfer atm bca
2 topup bank
3 topup bank
我所做的是
df['keyword'].str.replace("atmstrbca","atm bca")
df['keyword'].str.replace("topu","topup")
输出为
id keyword
1 transfer atm bca
2 topup bank
3 topupp bank
“我的想法”正在使用文本replacer.txt
来执行此操作,因为列表中的关键字更多为tahn 100关键字
答案 0 :(得分:1)
从第一个文件创建字典并按空格分割值,然后使用get
进行替换:
d = dict(zip(df1.keyword_origin, df1.keyword_destinantion))
#alternative
#d = df1.set_index('keyword_origin')['keyword_destinantion'].to_dict()
df2['keyword'] = df2['keyword'].apply(lambda x: ' '.join([d.get(y, y) for y in x.split()]))
print (df2)
id keyword
0 1 transfer atm bca
1 2 topup bank
2 3 topup bank
答案 1 :(得分:1)
您可以将str.replace
与可调用对象一起使用:
In [11]: d = {"atmstrbca": "atm bca", "topu": "topup"} # all the typos
In [12]: regex = r'\b' + '|'.join(d.keys()) + r'\b'
In [13]: df['keyword'].str.replace(regex, lambda x: d[x.group()], regex=True)
Out[13]:
0 transfer atm bca
1 topup bank
2 topup bank
Name: keyword, dtype: object
您可以从另一个DataFrame做出字典,例如通过:
dict(zip(df_replacer.keyword_origin, df_replacer.keyword_destinantion))