gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:32:47 25 4
gpt4 key购买 nike

我正在尝试计算 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

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

最佳答案

因为输入Series.str.count是正则表达式,可以使用 re.escape:

pat : str

Valid regular expression.

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

关于Python - 计算 Pandas 数据框中的非字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58046133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com