You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按年中日期分组?Python温度数据跨年度最值统计需求

问题描述

我有一份年度每日温度数据,数据结构如下:

IDDateElementData_Value
0USW0009488912/11/2014TMAX22
1USC0020897229/04/2009TMIN56
2USC0020003226/05/2008TMAX278
3USC0020556311/11/2005TMAX139
4USC0020023027/02/2014TMAX-106

我已通过以下代码过滤闰年2月29日及Data_Value为0的数据,对2005-2015年的数据按Date字段分组,聚合得到各日期的最值:

dfMAX=df[(df['Element']=='TMAX') & (df['Data_Value']!=0) & (~df.Date.str.startswith('29/02'))].groupby("Date").agg({"Data_Value":np.max})
dfMIN=df[(df['Element']=='TMIN') & (df['Data_Value']!=0) & (~df.Date.str.startswith('29/02'))].groupby("Date").agg({"Data_Value":np.min})

当前输出为各年度对应日期的最值,但我需要按年中日期(如01-01)分组,统计2005-2014年间对应日期的温度最大/最小值,日期为字符串格式,期望结果如下:

DayData_Value
01-01# 2005-2014年1月1日的最高温
01-02# 2005-2014年1月2日的最高温
01-03# 2005-2014年1月3日的最高温
01-04# 2005-2014年1月4日的最高温...
解决方案

要实现按年中日期分组统计,需先提取月-日格式的日期字段,再筛选2005-2014年的数据,最后分组聚合:

1. 提取月-日格式日期

从原始Date字段(格式为DD/MM/YYYY)中拆分出月和日,拼接成MM-DD格式的Day字段:

df['Day'] = df['Date'].str.split('/').apply(lambda x: f"{x[1]}-{x[0]}")

2. 筛选2005-2014年数据

提取年份并过滤出目标时间范围的数据:

df['Year'] = df['Date'].str.split('/').apply(lambda x: int(x[2]))
df_filtered = df[(df['Year'] >= 2005) & (df['Year'] <= 2014)]

3. 分组聚合最值

结合原有过滤规则,按Day分组统计最高/最低温度:

# 统计2005-2014年各日期最高温
dfMAX = df_filtered[(df_filtered['Element'] == 'TMAX') & 
                    (df_filtered['Data_Value'] != 0) & 
                    (~df_filtered['Date'].str.startswith('29/02'))] \
                   .groupby('Day')['Data_Value'].max().reset_index()

# 统计2005-2014年各日期最低温
dfMIN = df_filtered[(df_filtered['Element'] == 'TMIN') & 
                    (df_filtered['Data_Value'] != 0) & 
                    (~df_filtered['Date'].str.startswith('29/02'))] \
                   .groupby('Day')['Data_Value'].min().reset_index()

4. 可选:按日期排序

若需要结果按日期顺序排列,可添加排序逻辑:

dfMAX = dfMAX.sort_values('Day').reset_index(drop=True)
dfMIN = dfMIN.sort_values('Day').reset_index(drop=True)

内容的提问来源于stack exchange,提问作者user21294168

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:07:56