我有以下 Pandas 数据框:
import pandas as pd
from collections import Counter
print(sentences)
输出是(是的,列名是0
):
0
0 A
1 B
2 C
3 D
4 EEE
... ...
462064467 FGH
462064468 QRS
462064469 EEE
462064470 VWXYZ
462064471 !!!
[462064472 rows x 1 columns]
我有一个自定义函数来检查列中的内容的0
长度是否大于 1(仅作为示例):
def is_more_than_one_character(t):
if len(t) > 1:
return True
else:
return False
我像这样应用该函数:
counter = Counter(sentences.apply(is_more_than_one_character))
我希望计算每个长度 > 1 的字符串的出现次数。以下是示例输出print(counter)
:
[(EEE, 2), (FGH, 1), (QRS, 1), (!!!, 1)...]
但目前,输出是:
[(False, 460686058), (True, 1378414)]
我错过了什么?我想我已经接近答案了。提前致谢。
您可以使用布尔索引进行过滤
str.len
,然后传递给value_counts
:或者计算所有内容,然后过滤键:
输出:
如果您确实需要使用您的功能和原始方法:
或者对函数进行矢量化:
或者,实际上,因为无论如何你都必须循环,所以最好使用纯 python:
输出:
您可以制作一个掩码来过滤掉所有长度为 1 的字符串,然后使用 value_counts 获取每个剩余字符串的计数,如下所示 -