如何在Python中按两列分组并计算分类计数平均值?
修正方案与实现步骤
原代码存在的问题
groupby处理多列分组时,参数需放入列表中,原写法groupby('CONTAINER', 'DATE')会触发语法错误,正确格式应为groupby(['CONTAINER', 'DATE'])agg方法的字典参数中,重复使用'CLOUDS'作为键会导致后一个值覆盖前一个,且此处需求是统计分组记录数,而非对CLOUDS列求均值
正确实现代码
分步实现(更清晰)
# 按CONTAINER和DATE分组,统计每组的记录数量 group_counts = df.groupby(['CONTAINER', 'DATE']).size().reset_index(name='COUNT') # 计算所有分组计数的平均值 avg_count = group_counts['COUNT'].mean() # 按需求格式输出结果 print(f"AVG CLOUDS PER CONTAINER: ~{avg_count:.3f}")
合并简化写法
avg_count = df.groupby(['CONTAINER', 'DATE']).size().mean() print(f"AVG CLOUDS PER CONTAINER: ~{avg_count:.3f}")
逻辑说明
groupby(['CONTAINER', 'DATE']).size()会生成每个(容器,日期)组合的记录数序列,对应结果为[3,4,3,2]- 对该序列求均值,即
(3+4+3+2)/4 = 3.333,正好符合预期输出
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

