【问题标题】:Python Pandas replace() not workingPython Pandas 替换()不起作用
【发布时间】:2016-03-03 19:01:06
【问题描述】:

我有一些字段中有一些来自上游进程的垃圾。我正在尝试从将此垃圾附加到电子邮件地址的列中删除 '\r\nName: hwowneremail, dtype: object'

report_df['Owner'].replace('\r\nName: hwowneremail, dtype: object',inplace=True)
report_df['Owner'][26]

输出:

'   Jane.Doe@company.com\r\nName: hwowneremail, dtype: object'

我还尝试了以下变体,但均未成功:

replace('Name: hwowneremail, dtype: object', inplace=True)

replace('\\r\\nName: hwowneremail, dtype: object', inplace=True

replace(r'\r\nName: hwowneremail, dtype: object', inplace=True)

replace('\r\nName: hwowneremail, dtype: object', "", inplace=True)

replace(to_value='\r\nName: hwowneremail, dtype: object', value=' ',inplace=True)

replace('\\r\\nName: hwowneremail, dtype: object',regex=True,inplace=True)

提前感谢您的洞察力!

【问题讨论】:

    标签: pandas


    【解决方案1】:

    据我所知,Python Pandas 在替换中做了一些改动。您应该尝试传递正则表达式关键字参数。

    像这样;

    report_df['Owner'].replace({'\r\nName: hwowneremail, dtype: object':''},regex=True)
    

    【讨论】:

    • 做到了!有趣的是,我从那个开始,但没有 regex=True。我添加了 inplace=True 并解决了问题。谢谢!
    • 这也难倒了我一段时间。 regex=True 现在显然是必需的。
    【解决方案2】:

    您也可以使用:

    report_df.Owner.str.replace(r'\r\n.*', '')
    

    【讨论】:

      【解决方案3】:

      或者有时只是确保在您要查找的字符/字符串之前或之后没有空格(expl. ? ):

      df.replace(r'\s*\?\s*', np.nan, regex=True) 
      

      或者只是确保你指定你正在寻找一个字符串:

      df.replace(r'\?', np.nan, regex=True)
      

      对于这两种情况:不要忘记

      regex=True 
      

      【讨论】:

        猜你喜欢
        • 2022-08-04
        • 2017-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 2022-01-19
        相关资源
        最近更新 更多