Как подсчитать различные значения в столбце группы pandas по объекту?

У меня есть кадр данных pandas и группирую его по двум столбцам (например col1 и col2). При фиксированных значениях col1 и col2 (т.е. Для группы) я могу иметь несколько разных значений в col3. Я хотел бы подсчитать количество различных значений из третьих столбцов.

Например, если у меня есть это как мой ввод:

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

Я хотел бы иметь эту таблицу (фрейм данных) в качестве вывода:

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

Ответ 1

df.groupby(['col1','col2'])['col3'].nunique().reset_index()

Ответ 2

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