web-dev-qa-db-fra.com

Compter les éléments supérieurs à une valeur dans pandas groupby

J'ai l'ensemble de données Yelp et je veux compter toutes les critiques qui ont plus de 3 étoiles. J'obtiens le nombre d'avis en faisant ceci:

reviews.groupby('business_id')['stars'].count()

Maintenant, je veux obtenir le nombre de critiques qui avaient plus de 3 étoiles, j'ai donc essayé cela en m'inspirant de ici :

reviews.groupby('business_id')['stars'].agg({'greater':lambda val: (val > 3).count()})

Mais cela me donne juste le compte de toutes les étoiles comme avant. Je ne sais pas si c'est la bonne façon de procéder? Qu'est-ce que je fais mal ici. L'expression lambda ne passe-t-elle pas par chaque valeur de la colonne des étoiles?

EDIT: D'accord, je me sens stupide. J'aurais dû utiliser la fonction sum au lieu de count pour obtenir la valeur des éléments supérieurs à 3, comme ceci:

reviews.groupby('business_id')['stars'].agg({'greater':lambda val: (val > 3).sum()})
12
rookie

Vous pouvez essayer de faire:

reviews[reviews['stars'] > 3].groupby('business_id')['stars'].count()
10
Mohamed AL ANI