如何使用年度均值汇总Python DataFrame中的蜜蜂种群数据?
问题原因
你第一次执行的bees.groupby(['year'])['numcol'].mean()返回的是单维度Series对象,不是DataFrame结构,所以后续直接追加列的操作无法得到预期的多列汇总表,同时多次重复执行groupby也会产生不必要的性能开销。
最优解决方案
一次性对目标列执行分组聚合即可,添加as_index=False参数可以让年份保留为普通列,符合常规汇总表的使用习惯:
usa = bees.groupby('year', as_index=False)[['numcol', 'yieldpercol', 'totalprod']].mean()
分步实现的修正方案
如果你需要分步计算各列均值,只需要第一次分组时就返回DataFrame格式即可:
# 用双层方括号取列,确保返回的是DataFrame而非Series usa = bees.groupby('year')[['numcol']].mean() usa['yieldpercol'] = bees.groupby('year')['yieldpercol'].mean() usa['totalprod'] = bees.groupby('year')['totalprod'].mean() # 如果需要把年份从索引转为普通列,新增下面这行即可 usa = usa.reset_index()
内容的提问来源于stack exchange,提问作者Michael Schulte
相关产品推荐
相关产品推荐

