【问题标题】:Replace partial string in Pandas Dataframe with dictionary value用字典值替换 Pandas Dataframe 中的部分字符串
【发布时间】:2019-07-25 16:00:35
【问题描述】:

我有一个 Pandas DataFrame (df),其中一些单词包含编码替换字符。我想用字典中的替换词(翻译)替换这些词。

translations = {'gr�nn': 'gronn', 'm�nst': 'menst'}
df = pd.DataFrame(["gr�nn Y", "One gr�nn", "Y m�nst/line X"])

df.replace(translations, regex=True, inplace=True)

但是,它似乎并未捕获所有实例。 当前输出:

                0
0         gronn Y
1       One gr�nn
2  Y m�nst/line X

我是否需要指定任何正则表达式模式以使替换也能捕获字符串中的部分单词?

预期输出:

                0
0         gronn Y
1       One gronn
2  Y menst/line X

【问题讨论】:

  • 如果你只有 gronn,我建议你用 gronn 替换所有 gr.nn
  • @Frenchy 这只是一个样本集 - 完整集包含多个变体。
  • 如果你有一些被替换而另一些没有被替换,那意味着不同的字符

标签: python regex pandas dataframe


【解决方案1】:

将您的翻译转换为正则表达式查找/替换字符串:

translations = {r'(.*)gr�nn(.*)': r'\1gronn\2', r'(.*)m�nst(.*)': r'\1menst\2'}
df = pd.DataFrame(["gr�nn Y", "One gr�nn", "Y m�nst/line X"])
df.replace(translations, regex=True)

返回:

    0
0   gronn Y
1   One gronn
2   Y menst/line X

【讨论】:

  • 非常好的主意。 :) +1
  • 你假设 � 是一样的。所以 � 可以在它的视觉后面隐藏不同的值(十六进制)
  • @Frenchy 我想在这种情况下你可以使用另一个组r'(.*)gr(.*)nn(.*)': r'\1gronn\3'
猜你喜欢
  • 2019-10-01
  • 2022-11-25
  • 2020-11-09
  • 1970-01-01
  • 2018-03-02
  • 2018-09-11
  • 2018-02-03
  • 2017-07-15
  • 1970-01-01
相关资源
最近更新 更多