我正在尝试在python pandas中使用df['column_name'].str.count("+")
,但我收到了
"错误:无需重复"
。对于常规字符,该方法有效,例如, df['column_name'].str.count("a")
工作正常。
此外," ^" -sign存在问题。如果我使用df['column_name'].str.contains("^")
,则结果不正确 - 它看起来像" ^"被解释为" " (空白空间)。
令人惊讶的是,如果我在常规的非熊猫字符串上使用.count("+")
和.contains("^")
,那么它们的效果非常好。
简单的工作示例:
df = pd.DataFrame({'column1': ['Nighthawks+', 'Dragoons'], 'column2': ['1st', '2nd']}, columns = ['column1', 'column2'])
申请df["column1"].str.contains("^")
时,获得" True,True"但是应该是" False,False"。
当应用df["column1"].str.count("+")
时,一个人获得
"错误:无需重复"
但是,在熊猫之外,"bla++".count("+")
正确地给出了结果" 2"。
任何解决方案?感谢
答案 0 :(得分:3)
你需要逃避加号:
In[10]:
df = pd.DataFrame({'a':['dsa^', '^++', '+++','asdasads']})
df
Out[10]:
a
0 dsa^
1 ^++
2 +++
3 asdasads
In[11]:
df['a'].str.count("\+")
Out[11]:
0 0
1 2
2 3
3 0
Name: a, dtype: int64
此外,当您执行df['a'].str.count('^')
时,这只会为所有行返回1
:
In[12]:
df['a'].str.count('^')
Out[12]:
0 1
1 1
2 1
3 1
Name: a, dtype: int64
你需要再次逃避模式:
In[16]:
df['a'].str.count('\^')
Out[16]:
0 1
1 1
2 0
3 0
Name: a, dtype: int64
修改强>
关于普通字符串count
与Series
上的str
之间的语义差异,^
上的count
只是字符数,但是{{3}采用正则表达式模式。 +
和@setLocal
cd /d "Z:\PUBLIC\Auftrag_MegaCAD\"
start Auftrag.exe %1
是特殊字符,如果您要搜索这些字符,则需要使用反斜杠进行转义
答案 1 :(得分:3)
str.count()
中表示特殊字符,您需要对正则表达式使用反斜杠。 (上面的@EdChum对此进行了详细说明)。
另一方面,在str.contains()
中,我们不需要对正则表达式使用反斜杠。只需添加regex=False
之类的df['a'].str.contains("+", regex=False))
参数即可搜索并找到包含特殊字符的字符串。