我正在尝试使用df['column_name'].str.count("+")
在 python pandas 中,但我收到
“错误:没有可重复的”
。对于常规字符,该方法有效,例如df['column_name'].str.count("a")
工作正常。
另外,“^”符号也有问题。如果我使用df['column_name'].str.contains("^")
结果不正确 - 看起来“^”被解释为“”(空格)。
令人惊讶的是,如果我使用.count("+")
and .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”。
有什么解决办法吗?谢谢
您需要转义加号:
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
EDIT
关于之间的语义差异count
在普通字符串和Series
, count在蟒蛇上str
只是计算一个字符,但是str.count采用正则表达式模式。这^
and +
是特殊字符,如果您正在搜索这些字符,则需要使用反斜杠进行转义
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)