3 votes

Pandas - compter les valeurs distinctes par colonne

J'ai un cadre de données qui ressemble à ceci :

Id ActivityId ActivityCode

1   2           3
1   2           4
1   3           2

J'ai besoin de connaître le nombre d'identifiants d'activité distincts auxquels l'identifiant est lié.

Dans l'exemple ci-dessus, l'identifiant 1 renverrait 2 puisqu'il y a 2 identifiants d'activité distincts pour cet identifiant.

Le code SQL se présenterait comme suit :

SELECT COUNT(DISTINCT ActivityId) FROM table GROUP BY Id

Comment faire cela dans pandas ?

(Et si possible, j'aimerais savoir s'il existe un moyen d'obtenir le résultat dans un dictionnaire, sans itérer manuellement).

10voto

jezrael Points 290608

Je pense que vous avez besoin groupby con nunique :

print (df)
   Id  ActivityId  ActivityCode
0   1           2             3
1   1           2             4
2   1           3             2
3   2           8             7

df = df.groupby('Id')['ActivityId'].nunique()
print (df)
Id
1    2
2    1
Name: ActivityId, dtype: int64

Et pour dict ajouter Series.to_dict :

d = df.groupby('Id')['ActivityId'].nunique().to_dict()
print (d)
{1: 2, 2: 1}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X