Подтвердить что ты не робот

Как GroupBy Dataframe в Pandas и сохранить столбцы

с учетом данных, которые записывают в журналы такие книги, как это:

Name   Type   ID
Book1  ebook  1
Book2  paper  2
Book3  paper  3
Book1  ebook  1
Book2  paper  2

Мне нужно получить счет всех книг, сохранив другие столбцы и получив следующее:

Name   Type   ID    Count
Book1  ebook  1     2
Book2  paper  2     2
Book3  paper  3     1

Как это можно сделать?

Спасибо!

4b9b3361

Ответ 1

Вы хотите следующее:

In [20]:
df.groupby(['Name','Type','ID']).count().reset_index()

Out[20]:
    Name   Type  ID  Count
0  Book1  ebook   1      2
1  Book2  paper   2      2
2  Book3  paper   3      1

В вашем случае совпадения "Имя", "Тип" и "ID" соответствуют значениям, поэтому мы можем groupby, вызовите count, а затем reset_index.

Альтернативным подходом было бы добавить столбец "Count" с помощью transform, а затем вызвать drop_duplicates:

In [25]:
df['Count'] = df.groupby(['Name'])['ID'].transform('count')
df.drop_duplicates()

Out[25]:
    Name   Type  ID  Count
0  Book1  ebook   1      2
1  Book2  paper   2      2
2  Book3  paper   3      1

Ответ 2

Я думаю, что as_index = False должен делать трюк.

df.groupby(['Name','Type','ID'], as_index=False).count()