【发布时间】:2019-04-18 22:38:07
【问题描述】:
应用 Pandas 的 groupby 方法后无法获取 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 monday”重复了两次。所以在 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方法来实现这一点??
【问题讨论】:
-
df.groupby(['col1', 'day'])['col4'].agg(['first', 'count']).reset_index() -
正如我提到的,真实数据共有 14 列,以大字符串作为列名,因此将所有 14 个列名保留在 groupby 语句中并不是一种愉快的方式
标签: python-3.x pandas pandas-groupby