web-dev-qa-db-fra.com

Python pandas groupe de données en fonction d'une condition

Ma question est simple, j'ai un dataframe et je groupby les résultats basés sur une colonne et j'obtiens la taille comme ceci:

df.groupby('column').size()

Maintenant, le problème est que je ne veux que ceux dont la taille est supérieure à X . Je me demande si je peux le faire en utilisant une fonction lambda ou quelque chose de similaire? J'ai déjà essayé ceci:

df.groupby('column').size() > X

et il imprime des valeurs True et False.

16
ahajib

Le résultat groupé est un DataFrame normal, il suffit donc de filtrer les résultats comme d'habitude:

 import pandas as pd

 df = pd.DataFrame({'a': ['a', 'b', 'a', 'a', 'b', 'c', 'd']})
 after = df.groupby('a').size()
 >> after
 a
 a    3
 b    2
 c    1
 d    1
 dtype: int64

 >> after[after > 2]
 a
 a    3
 dtype: int64
23
Ami Tavory

Essayez ce code:

df.groupby('column').filter(lambda group: group.size > X)
17
Jianxun Li