【问题标题】:Removing backslashes from values in a Pandas dataframe从 Pandas 数据框中的值中删除反斜杠
【发布时间】:2019-03-22 17:24:04
【问题描述】:

我有一个包含反斜杠的 Pandas 数据框。我想去掉那些反斜杠,但我无法让替换功能工作。这就是我正在做的事情:

df=pd.DataFrame(data={'col1':['a\\b','ab'], 'col2':['c','cd\\']})
df.replace(to_replace='\\', value='', regex=True, inplace=True)

当我运行它时,我收到一条错误消息:

error: bad escape (end of pattern) at position 0

如果我删除“regex=True”,我不会收到错误消息,但没有任何内容被替换。

如何删除反斜杠?

【问题讨论】:

  • 使用df.replace(r'\\','', regex=True)df.apply(lambda x: x.str.replace('\\',''))
  • 所以,左边的示例与我实现的代码相同,只是我指定了参数名称而不是仅仅依赖于它们的位置,所以我会试一试,但我预计会出现同样的错误. lambda 表达式可能对我有用(我一定会试一试),但我认为这可能是替换函数实现中的一个错误。似乎我遇到的问题是 Python 编译器可以接受的有效代码与替换函数在传入后可以作为有效值处理的内容之间的差异。
  • 是的。 "df.replace(r'\\','', regex=True)" 和 "df.replace(to_replace='\\', value='', regex=True)" 产生完全相同的错误。跨度>
  • 我尝试了 lambda,当我对原始代码 sn-p 中的示例数据框运行它时,它给了我想要的结果。但是,实际数据集中有非字符串列,这导致了以下错误:AttributeError: ('Can only use .str accessor with string values, which use np.object_ dtype in pandas', 'occured at index RESTRICTED' )
  • 所以只需要字符串前面的 r 就可以将其转换为原始字符串文字吗?哇。谢谢你,阿比!如果您将此作为答案而不是评论,我可以将其标记为我的首选答案。这样你就可以得到它的功劳。

标签: python pandas dataframe replace escaping


【解决方案1】:

您可以使用replace

df = df.replace(to_replace= r'\\', value= '', regex=True)

【讨论】:

  • 谢谢你,阿比。使用字符串文字标志('\\'前面的“r”),这非常有效!
  • @ASturt 乐于助人。 :)
【解决方案2】:

我更喜欢对每一列使用字符串 API。

for col in df:
    df[col] = df[col].str.replace(r'\\','')

【讨论】:

  • 谢谢詹姆斯,但这本身并不是一个很好的解决方案,因为我有多个列需要从中删除反斜杠。实际上,如果您查看 Abhi(他在您之前回答)的回复,您会发现他已经建议了字符串 API,但将其放在 lambda 函数中,以便更好地满足我原来的问题中描述的问题的标准.也就是说,他的解决方案不适用于我的实际数据集,因为其中有非字符串列。因此,我可能只需要使用您的解决方案并单独处理每一列。
猜你喜欢
  • 1970-01-01
  • 2018-02-17
  • 2016-09-03
  • 1970-01-01
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 2015-03-28
相关资源
最近更新 更多