开发者社区> 问答> 正文

计算Pandas数据框中的非字母数字字符

我正在尝试计算Pandas DataFrame列中字符的出现次数。例如,我想总共知道该字符A出现在列中的次数。当存在非字母数字字符时,会发生此问题。

这是一个最小的可重现示例:

import pandas as pd

df = pd.DataFrame(data = ['AA', 'BA', 'ABA'], columns = ['col1'])

charset = set("".join(list(df['col1'])))

print(charset)

这是列中的字符集:

{'B', 'A'}

for char in charset:

print(char, ' ', sum(df['col1'].str.count(char)))

这是每个字符出现在列中的次数:

B 2

A 5

再次尝试相同的操作,除了一些非字母数字字符:

df2 = pd.DataFrame(data = ['AA+', 'BA', 'ABA('], columns = ['col1'])

charset = set("".join(list(df2['col1'])))

print(charset)

如预期的那样,字符集:

{'(', 'B', '+', 'A'}

但是现在尝试计算字符失败:

for char in charset:

print(char, ' ', sum(df2['col1'].str.count(char)))

error: missing ), unterminated subpattern at position 0

是否有某种方法可以转义非字母数字字符,或者获得我正在寻找的计数?

展开
收起
游客6qcs5bpxssri2 2019-09-22 17:12:11 1533 0
1 条回答
写回答
取消 提交回答
  • 因为输入的Series.str.count是正则表达式,所以可以使用re.escape:

    df2 = pd.DataFrame(data = ['AA+', 'BA', 'ABA('], columns = ['col1'])

    #list is not necessary

    charset = set("".join(df2['col1']))

    print(charset)

    {'(', 'B', 'A', '+'}

    import re

    for char in charset:

    #used pandas sum
    
    print(char, ' ', df2['col1'].str.count(re.escape(char)).sum())
    

    ( 1

    B 2

    A 5

    • 1
    2019-09-22 17:12:56
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
中文:即学即用的Pandas入门与时间序列分析 立即下载
即学即用的Pandas入门与时间序列分析 立即下载
低代码开发师(初级)实战教程 立即下载