首页 > 解决方案 > 如何用正确的版本替换 pandas DataFrame 中的短语列表(不是单词或字符串)

问题描述

我知道有很多类似的答案,但没有一个我可以根据我的情况工作。我有一个名称相似的品牌数据框。我需要用一个名称“可乐”替换所有这些“可乐”变体。

问题是像“Coc”这样的替换字符串正在将“Coca Cola”变成“Cokea Cola”。同样,我尝试了正则表达式 \b 和 \w 变体,但随后我会得到“可口可乐”或“可口可乐”等。

wrong_df = pd.DataFrame(["Coca Cola", "Coca", "Cola", "Coke", "Co"])
words_to_replace = ["Coca Cola", "Coca", "Cola", "Co"]
correct_word = 'Coke'

for word in words_to_replace:
    string = "r'^" + "{}".format(word) + "\\b"
    print(string)
    correct_df = wrong_df.replace(to_replace=string, value=correct_word, regex=True)
correct_df

# df_should_look_like_this = pd.DataFrame(["Coke", "Coca", "Coke", "Coke"])

标签: pythonregexpandasreplace

解决方案


只需使用pandas'replace()方法。

wrong_df.replace(words_to_replace, correct_word)

结果:

      0
0  Coke
1  Coke
2  Coke
3  Coke
4  Coke

推荐阅读