Eu tenho o seguinte DataFrame do Pandas:
import pandas as pd
from collections import Counter
print(sentences)
a saída é (sim, o nome da coluna é 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]
Eu tenho uma função personalizada para verificar se o conteúdo da coluna 0
tem comprimento> 1 ou não (apenas um exemplo):
def is_more_than_one_character(t):
if len(t) > 1:
return True
else:
return False
E eu aplico a função assim:
counter = Counter(sentences.apply(is_more_than_one_character))
Desejo contar a ocorrência de cada string com comprimento> 1. Aqui está o exemplo de saída de print(counter)
:
[(EEE, 2), (FGH, 1), (QRS, 1), (!!!, 1)...]
mas atualmente, a saída é:
[(False, 460686058), (True, 1378414)]
O que eu perdi? Acho que estou perto. Desde já, obrigado.
Você pode filtrar com
str.len
indexação booleana e passar paravalue_counts
:Ou conte tudo e filtre as chaves:
Saída:
Se você realmente precisa usar sua função e abordagem original:
Ou vetorizando a função:
Ou, na verdade, já que você terá que fazer um loop de qualquer maneira, é melhor usar python puro:
Saída:
Você pode criar uma máscara para filtrar todas as strings de comprimento 1 e, em seguida, usar value_counts para obter as contagens de cada string restante como -