给定一个记录一些书籍使用情况的 Dataframe ,如下所示:
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
如何才能做到这一点?
谢谢!
5条答案
按热度按时间0yg35tkg1#
您需要以下内容:
在您的情况下,“Name”、“Type”和“ID”列的值匹配,因此我们可以对这些列执行
groupby
,调用count
,然后调用reset_index
。另一种方法是使用
transform
添加'Count'列,然后调用drop_duplicates
:klr1opcd2#
我认为
as_index=False
应该可以做到这一点。bf1o4zei3#
如果df中有很多列,那么使用
df.groupby(['foo']).agg(...)
是有意义的,请参见here。.agg()
函数允许您选择如何处理不想应用操作的列。如果您只想保留它们,请使用.agg({'col1': 'first', 'col2': 'first', ...}
。除了'first'
,您还可以应用'sum'
、'mean'
等。f5emj3cl4#
最简单的方法
df.groupby(['col1','col1'],as_index=False).count()。使用as_index=False可保留列名。默认值为True。
也可以使用df.groupby(['col_1','col_2']).count().reset_index()
f5emj3cl5#
您也可以使用
value_counts()
:输出: