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

如何在Pandas中按季节与工作日进行多时段分组聚合?

解决方案

你可以通过以下步骤实现按季节+工作日分组计算平均值:

1. 确保索引为时间类型

如果你的DataFrame索引还不是DatetimeIndex,先完成转换:

df.index = pd.to_datetime(df.index)

2. 添加季节标签

以北半球常规季节划分为例(12-2月冬季,3-5月春季,6-8月夏季,9-11月秋季),通过月份映射生成季节列:

# 定义月份到季节的映射关系
season_map = {
    1: '冬季', 2: '冬季',
    3: '春季', 4: '春季', 5: '春季',
    6: '夏季', 7: '夏季', 8: '夏季',
    9: '秋季', 10: '秋季', 11: '秋季',
    12: '冬季'
}

# 给DataFrame新增季节列
df['季节'] = df.index.month.map(season_map)

如果是南半球数据,只需调整映射关系(比如6-8月为冬季、12-2月为夏季)即可。

3. 按季节+工作日分组求平均

有两种分组方式可选,按需使用:

方式一:用数字标识工作日(0=周一,6=周日)

df_season_weekday = df.groupby(['季节', df.index.weekday]).mean()

方式二:用直观的工作日名称

# 新增中文工作日名称列(需确保环境支持中文 locale)
df['工作日'] = df.index.day_name(locale='zh_CN.UTF-8')
# 若用英文名称:df['工作日'] = df.index.day_name()

# 分组计算平均值
df_season_weekday = df.groupby(['季节', '工作日']).mean()

结果说明

最终的df_season_weekday是多级索引DataFrame,外层为季节、内层为工作日,对应值即为该季节对应工作日的平均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 06:14:55