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

如何在Pandas中按相似日期(忽略年份)分组?

按每年相同月日分组的解决方案

这个需求用 pandas 的 groupby 就能轻松实现,核心思路就是从 datetime 列里提取月-日的组合作为分组依据,这样每年的同一天就会自动归为一组。下面是具体的实现步骤:

步骤1:确保日期列是 datetime 类型

首先得确认你的日期列已经被正确解析成 pandas 的 datetime 类型,如果还没转换,先跑这一步:

import pandas as pd

# 替换成你实际的日期列名
df['date_column'] = pd.to_datetime(df['date_column'])

步骤2:生成月-日分组键

从日期列中提取月份和日期的字符串组合(比如 '01-01'),用这个作为分组的标识:

# 创建月-日格式的分组键
df['month_day'] = df['date_column'].dt.strftime('%m-%d')

步骤3:执行分组操作

用 groupby 按刚生成的 month_day 列分组,这样就得到了每年相同日期的分组集合:

# 按月-日分组,得到分组对象
grouped_data = df.groupby('month_day')

步骤4:使用分组结果

你可以根据需求灵活使用这些分组:

  • 获取某一天的分组数据(比如查看所有年份的1月1日数据):
    jan_first_group = grouped_data.get_group('01-01')
    print(jan_first_group)
    
  • 遍历所有分组并处理数据(比如计算每组的关联数据均值):
    for month_day, group in grouped_data:
        print(f"=== 日期 {month_day} 的数据统计 ===")
        print(group['关联数据列名'].mean())  # 替换成你实际的关联数据列名
    

注意:处理闰年的2月29日

你的数据范围包含2008、2012这两个闰年,这些年份会有2月29日的数据。如果严格需要365组,你可以把2月29日的数据合并到2月28日(或者其他你指定的日期):

# 将闰年的2月29日映射为2月28日,保证分组总数为365
df['month_day'] = df['month_day'].replace('02-29', '02-28')
# 重新执行分组
grouped_data = df.groupby('month_day')

这样处理后,就刚好得到365组对应每年相同日期的数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:18:11