Подсчитать с помощью Pandas Transform - PullRequest
0 голосов
/ 27 января 2020

Допустим, у меня есть следующий фрейм данных:

df2 = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
                          'foo', 'bar', 'foo', 'foo'],
                   'B' : ['one', 'one', 'two', 'three',
                         'two', 'two', 'one', 'three'],
                   'C' : np.random.randn(8), 'D' : np.random.randn(8)})
df2.head()

, который выглядит следующим образом:

     A      B         C         D
0  foo    one  0.613774  0.783539
1  bar    one -0.937659 -0.913213
2  foo    two -1.568537  1.569597
3  bar  three -0.353449  1.108789
4  foo    two -1.769544  0.530466

Я знаю, что если бы я хотел создать другой столбец, который является счетчиком записи для каждого значения в столбце A, я мог бы сделать следующее:

df2['counts'] = df2.groupby('A')['B'].transform(np.size)

Однако, скажем, я хочу только подсчитать уникальные элементы B сгруппированы по A? Я знаю, как это сделать, если я собирался уменьшить размер кадра данных до 2 столбцов (один для «foo» и один для «bar»), но как мне сделать это с помощью преобразования?

1 Ответ

2 голосов
/ 27 января 2020

Использование GroupBy.transform.nunique:

df2['counts'] = df2.groupby('A')['B'].transform('nunique')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...