web-dev-qa-db-fra.com

Comment compter des valeurs distinctes dans une colonne d'un groupe pandas par objet?

J'ai un pandas bloc de données et le grouper par deux colonnes (par exemple col1 et col2). Pour des valeurs fixes de col1 et col2 (c'est-à-dire pour un groupe) Je peux avoir plusieurs valeurs différentes dans le col3. Je voudrais compter le nombre de valeurs distinctes des troisièmes colonnes.

Par exemple, si je l'ai comme entrée:

1  1  1
1  1  1
1  1  2
1  2  3
1  2  3
1  2  3
2  1  1
2  1  2
2  1  3
2  2  3
2  2  3
2  2  3

Je voudrais avoir cette table (bloc de données) en sortie:

1  1  2
1  2  1
2  1  3
2  2  1
21
Roman
df.groupby(['col1','col2'])['col3'].nunique().reset_index()
27
Roman
In [17]: df
Out[17]: 
    0  1  2
0   1  1  1
1   1  1  1
2   1  1  2
3   1  2  3
4   1  2  3
5   1  2  3
6   2  1  1
7   2  1  2
8   2  1  3
9   2  2  3
10  2  2  3
11  2  2  3

In [19]: df.groupby([0,1])[2].apply(lambda x: len(x.unique()))
Out[19]: 
0  1
1  1    2
   2    1
2  1    3
   2    1
dtype: int64
21
Jeff