如何在Pandas中按数据帧分组并保留列

2024-06-02 06:56:38 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个数据帧,该数据帧记录某些书籍的使用情况,例如:

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

怎么能做到?

谢谢!


Tags: 数据nameidtypecount记录情况paper
2条回答

我认为as_index=False应该起作用。

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

您需要以下内容:

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

在您的示例中,“Name”、“Type”和“ID”列在值中匹配,因此我们可以对它们进行^{}处理,调用^{},然后调用^{}

另一种方法是使用transform添加“Count”列,然后调用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

相关问题 更多 >