Ответ 1
df.groupby(['col1','col2'])['col3'].nunique().reset_index()
У меня есть кадр данных 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
df.groupby(['col1','col2'])['col3'].nunique().reset_index()
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