仅当df列中特殊字符后有数字时才对数字计数

时间:2019-07-02 06:05:31

标签: python pandas numpy dataframe

如果数字后面有一个特殊字符,而在特殊字符之后没有任何字符,则也将特殊字符计算在内。

当前输出:

 109* = 2  

 405,406+,407 = 4

 20++1=3

预期输出:

109* = 1 

405,406+,407 = 3

20++1=2

代码1:

   data['total_books']=data.books.str.count('[!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]').add(1)

code2:

   data.books.str.split(r'[!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]').str.len()

这两个代码都产生相同的输出。

任何可能的解决方案。

2 个答案:

答案 0 :(得分:1)

从下面一行

data.books.str.split(r'[!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]').str.len()

我删除了运算符(等于)=

data.books.str.split(r'[!"#$%&\'()*+,-./:;<>?@[\\]^_`{|}~]').str.len()

结果可能与预期相同。

答案 1 :(得分:-2)

str1 = '109*'
str2 = '405,406+,407'
str3 = '20++1'

str_ls = re.split(r'[!"#$%&\'()*+,-./:;<=>?@\[\]^_`{|}]', str3)
str_ls = [x for x in str_ls if len(x)>0]
)
len(str_ls)
2