如何检查列是否包含反斜杠

时间:2020-02-27 12:46:45

标签: python pandas

data = {'value': ['red','red\blue','yellow']
}
df = pd.DataFrame (data, columns = ['value'])

我尝试使用:

df[df['value'].str.contains("\\", na = False)]['value'].count()

但出现错误:

bad escape (end of pattern) at position 0

非常感谢。

3 个答案:

答案 0 :(得分:2)

为避免使用\b值更改了数据,请添加r前缀,因为默认情况下为regex=True。 为了简化计数,请使用sum的值中的True

data = {'value': ['red','red\ blue','yellow']}
df = pd.DataFrame (data, columns = ['value'])
print(df)
       value
0        red
1  red\ blue
2     yellow

print (df['value'].str.contains(r"\\", na = False).sum())
1

另一个想法是通过Series.str.contains中的regex=False参数避免使用正则表达式:

print (df['value'].str.contains("\\", na = False, regex=False).sum())
1

答案 1 :(得分:2)

似乎您只需要在显示的代码中先于r

df[df['value'].str.contains(r"\\", na = False)]['value'].count()

之所以能够成功,是因为,从documentation

除非存在“ r”或“ R”前缀,否则字符串中的转义序列将根据与标准C所用规则相似的规则进行解释

答案 2 :(得分:0)

评估df.value系列

>>> df.value
0        red
1    relue
2     yellow
Name: value, dtype: object
>>>

注意df.value [1]显示 relue 的值,因为它将\ b视为退格 在“红色\蓝色”上使用原始方法

data = {'value': ['red',r'red\blue','yellow']}
df = pd.DataFrame (data, columns = ['value'])

>>>print (df.value.str.contains("\\", na = False, regex=False).sum())
1
>>>