如何计算列中的值

时间:2019-07-13 09:37:31

标签: python pandas count

我有一个数据框名称df,我想计算'|'和name1和name2中的'/'。

id name1    name2
1  a|b      a/b
2  a|b|c    a/b/c
3  a        a
4  a|b|c|d  a/b/c/d 

这是代码

[In] 1: import pandas as pd

        data = {'id' : pd.Series([1, 2, 3, 4]),
                'name1': pd.Series(['a|b', 'a|b|c', 'a', 'a|b|c|d']), 
                'name2': pd.Series(['a/b', 'a/b/c', 'a', 'a/b/c/d'])}
        df = pd.DataFrame(data)

[In] 2: df['name1'].str.count('|')
[Out] 2: 4
         6
         2
         8
[In] 3: df['name2'].str.count('/')
[Out] 3: 1
         2
         0
         3

我面临的问题是它给出了3的正确输出,但是给出了2的不正确。
注意:我要计算'|'分别是因为在原始数据中只有'|'这个不是'/'。

1 个答案:

答案 0 :(得分:1)

问题是|是正则表达式特殊字符,因此必须用\进行转义:

a = df['name1'].str.count('\|')
print (a)
0    1
1    2
2    0
3    3
Name: name1, dtype: int64

如果选中Series.str.count

  

计算在系列/索引的每个字符串中出现的模式。

     

此函数用于计算在系列的每个字符串元素中重复特定 regex模式的次数。