如何用Pandas按年中日分组多年份数据并求最值?
按年中日(DOY)分组计算最值的简洁Pandas方法
你不用额外新增DOY列,直接借助Pandas日期索引的内置属性就能搞定,代码更清爽:
# 假设你的DataFrame名为df # 按日期索引的年中日分组,同时计算两列的最大、最小值 result = df.groupby(df.index.dayofyear).agg( TMAXDEC_max=('TMAXDEC', 'max'), TMAXDEC_min=('TMAXDEC', 'min'), TMINDEC_max=('TMINDEC', 'max'), TMINDEC_min=('TMINDEC', 'min') )
这样直接用df.index.dayofyear提取年中日数值做分组键,省去了新增列的步骤,而且通过具名聚合的方式,直接得到清晰的列名,不用后续再重命名。
如果需要把DOY作为普通列展示,加一行重置索引即可:
result = result.reset_index().rename(columns={'index': 'DOY'})
关键说明
dayofyear是Pandas日期时间索引的原生属性,自动返回对应日期的年中日数值,和你手动生成的DOY完全一致- 具名聚合(指定
列名=(原列, 聚合函数))让结果列名更直观,一步到位
内容的提问来源于stack exchange,提问作者Carl Huxohl
相关产品推荐
相关产品推荐

