Рассмотрим следующий dataframe:Количество уникальных значений в столбце группой
A B E
0 bar one 1
1 bar three 1
2 flux six 1
3 flux three 2
4 foo five 2
5 foo one 1
6 foo two 1
7 foo two 2
Я хотел бы найти для каждого значения A
, число уникальных значений в других столбцах.
Я думал, что следующее будет делать это:
df.groupby('A').apply(lambda x: x.nunique())
, но я получаю сообщение об ошибке:
AttributeError: 'DataFrame' object has no attribute 'nunique'
Я также попытался с:
df.groupby('A').nunique()
но я также получил ошибку:
AttributeError: 'DataFrameGroupBy' object has no attribute 'nunique'
Наконец я попытался с:
df.groupby('A').apply(lambda x: x.apply(lambda y: y.nunique()))
, который возвращает:
A B E A bar 1 2 1 flux 1 2 2 foo 1 3 2
и кажется правильным. Странно, однако, он также возвращает столбец
A
. Зачем?
FWIW, ваш метод # 3 работает для меня (я получаю '2 1 1' для' столбца é'), и это то, что я бы предложили. – DSM