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

如何使用Pandas的groupby/Grouper按月份分组(忽略年份)

按月份分组Pandas DataFrame(忽略年份)

嗨,这个需求其实很容易实现,核心是提取日期列的月份信息作为分组依据,同时忽略年份。下面给你几种用Pandas的groupby/Grouper实现的方法:

第一步:确保日期列是datetime类型

首先要确认你的Departure_Date和Arrival_Date列已经是datetime格式,如果还不是的话,先做转换:

import pandas as pd

# 读取你的分号分隔数据
df = pd.read_csv('your_data.csv', sep=';')

# 将日期列转换为datetime类型
df['Departure_Date'] = pd.to_datetime(df['Departure_Date'])
df['Arrival_Date'] = pd.to_datetime(df['Arrival_Date'])

方法一:直接用dt.month作为分组键

这是最直观的方式,通过dt.month提取日期列的月份(返回1-12的整数),然后传入groupby:

# 按出发日期的月份分组(忽略年份)
grouped_by_dep_month = df.groupby(df['Departure_Date'].dt.month)

# 如果需要按到达日期的月份分组,同理:
# grouped_by_arr_month = df.groupby(df['Arrival_Date'].dt.month)

方法二:使用pd.Grouper配合月份提取

如果你更倾向于用Grouper语法,可以通过func参数指定提取月份的逻辑:

# 使用Grouper按出发日期的月份分组
grouped_by_month = df.groupby(pd.Grouper(key='Departure_Date', func=lambda x: x.month))

方法三:先创建月份列再分组

如果需要后续复用月份信息,可以先新增一个Month列,再按这个列分组:

# 新增月份列(1-12)
df['Departure_Month'] = df['Departure_Date'].dt.month

# 按新增的月份列分组
grouped_by_month = df.groupby('Departure_Month')

示例:分组后统计数据

分组完成后,你可以执行各种聚合操作,比如统计每个月份的航班数量:

# 统计每个月份的航班总数
monthly_flight_count = grouped_by_month.size()
print(monthly_flight_count)

# 或者统计每个月份的平均出发时间(示例)
monthly_avg_dep_time = grouped_by_month['Departure_Time'].mean()

这样所有不同年份的同一月份都会被分到同一组,完美满足你忽略年份的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:27:21