【问题标题】:Replacing unicode from a text in a pandas dataframe从熊猫数据框中的文本替换unicode
【发布时间】:2020-11-10 03:13:20
【问题描述】:

我有这个数据框:

>>> df
                   Temp
0   before 1.5° C after
1     before 2° C after
2    before 2°  C after
3  before 1.5°  C after

我应用这个replace 方法:

newdf = df.replace(r'(?P<quote>\d[.]*[\d]*)(?u:00B0)\s+C', '(?P=quote)'r'C')

数据框保持不变。但是,我希望它看起来像这样:

>>> newdf
               Temp
0 before 1.5C after
1   before 2C after
2   before 2C after
3 before 1.5C after

我也尝试过newdf = df.replace(r'°\s+',''),但这也不会改变数据框。

这些其他问题:

【问题讨论】:

    标签: python pandas dataframe unicode python-re


    【解决方案1】:

    使用模式r"[^\d.C]" 替换除intdecimalC 之外的所有内容

    例如:

    df["New"] = df["Temp"].str.replace(r"[^\d.C]", "")
    #OR
    df["New"] = df["Temp"].str.replace(r"(?<=\d)(°\s*)", "")
    print(df)
    

    输出:

          Temp   New
    0   1.5° C  1.5C
    1     2° C    2C
    2     2° C    2C
    3  1.5°  C  1.5C
    

    【讨论】:

    • 谢谢我的 MWE 太小了。当我给出的字符串在实际文本的上下文中时,第二个有效。我编辑了问题以使 MWE 不那么小
    【解决方案2】:

    另一种方式;只需替换所有non digits,不包括.

     df["New"]=df.Temp.str.replace('[^\w\.]','')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 2023-01-16
      • 2018-09-29
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多