【发布时间】: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