报错:'DataFrameGroupBy'对象无'reset_index'属性,寻求解决方案
解决DataFrameGroupBy调用reset_index报错的问题
错误原因
df.groupby(['hour','dt'])返回的是DataFrameGroupBy类型的分组对象,它仅保存了分组规则,并未执行任何聚合计算,因此不存在reset_index方法——这个方法是DataFrame专属的,只有拿到聚合后的DataFrame才能调用。
修正方案
你需要先对分组对象执行聚合操作(比如统计每组记录数),得到聚合结果后再调用reset_index。以统计每个(hour, dt)组的记录数为例,正确代码如下:
# 统计每组总行数,转化为DataFrame并重置索引 df_new = df.groupby(['hour','dt']).size().reset_index(name="count")
如果需要统计某一列的非空值数量,可以指定列名:
# 统计指定列的非空记录数 df_new = df.groupby(['hour','dt'])['列名'].count().reset_index(name="count")
说明
size():返回每个分组的总行数,结果是一个以(hour, dt)为索引的Seriesreset_index(name="count"):将分组索引转为普通列,并把聚合结果的列名设置为"count"
内容的提问来源于stack exchange,提问作者Srijan
相关产品推荐
相关产品推荐

