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
非常感谢。
答案 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
>>>