Python无需聚合的groupby操作:如何按唯一月份分组提取对应观测数据
实现方案
你需要的10行(年份)×12列(月份)的宽表格式,无需手动遍历groupby结果拼接,Pandas提供了更简洁的内置方法实现:
方法1:直接使用pivot转换(推荐)
假设你的数据包含year(年份列)、month(月份列)、以及你要提取的观测值列(示例中以value指代,替换为你实际的列名即可),一行代码即可生成目标表格:
# 无重复年月组合时直接使用pivot result = data.pivot(index='year', columns='month', values='value')
如果同一个年月下存在多条观测值,需要先聚合(比如取均值、求和),使用pivot_table指定聚合规则即可:
# 示例为取同年月下观测值的均值,aggfunc可替换为sum、count等你需要的聚合函数 result = data.pivot_table(index='year', columns='month', values='value', aggfunc='mean')
方法2:基于你现有groupby逻辑修改
如果你需要沿用当前的分组遍历逻辑,可参考如下修改后的代码:
import pandas as pd data1 = data.groupby(by='month') result = pd.DataFrame() for month, group in data1: # 把当前月份分组的观测值按年份为索引加入结果表的对应列 result[month] = group.set_index('year')['value']
生成结果后直接打印result即可查看目标格式的表格。
内容的提问来源于stack exchange,提问作者Vincent
相关产品推荐
相关产品推荐

