使用'groupby'方法获取Dataframe的所有列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用'groupby'方法获取Dataframe的所有列相关的知识,希望对你有一定的参考价值。
在应用Pandas的groupby方法后,无法获取Dataframe的所有列
我有一个示例Dataframe如下。
col1 col2 day col4
0 a1 b1 monday c1
1 a2 b2 tuesday c2
2 a3 b3 wednesday c3
3 a1 b1 monday c5
这里'a1 b1星期一'重复两次。所以在groupby之后输出应该是:
col1 col2 day col4 count
a1 b1 monday c1 2
a2 b2 tuesday c2 1
a3 b3 wednesday c3 1
我尝试使用df.groupby(['col1','day'],sort=False).size().reset_index(name='Count')
和
df.groupby(['col1','day']).transform('count')
并且输出总是如此
col1 day count
a1 monday 2
a2 tuesday 1
a3 wednesday 1
我的原始数据有14列,将所有列名保留在groupby语句中是没有意义的。是否有更好的pythonic方法来实现这一目标?
答案
第一次groupby
与transform
制作你的count
专栏。
然后使用drop_duplicates
删除重复的行:
df['count'] = df.groupby(['col1','day'],sort=False)['col1'].transform('size')
df.drop_duplicates(['col1', 'day'], inplace=True)
print(df)
col1 col2 day col4 count
0 a1 b1 monday c1 2
1 a2 b2 tuesday c2 1
2 a3 b3 wednesday c3 1
以上是关于使用'groupby'方法获取Dataframe的所有列的主要内容,如果未能解决你的问题,请参考以下文章
Python 中 dataframe.groupby按多条件分组怎么做?