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

如何在Python DataFrame中按季度分组并对指定数值列求和

实现代码

你可以通过两种方式实现需求,第一种直接借助pandas的datetime解析能力,第二种手动映射月份适配所有运行环境:

方法1:使用datetime自动解析(推荐,代码更简洁)

import pandas as pd

# 转换Date列为datetime类型,指定格式适配月份缩写+年份的结构
df1['Date'] = pd.to_datetime(df1['Date'], format='%b-%Y')

# 生成符合要求的季度标识列
df1['quarter_tag'] = 'Q' + df1['Date'].dt.quarter.astype(str) + '-' + df1['Date'].dt.year.astype(str)

# 按季度标识分组求和,重命名列匹配期望输出
result = df1.groupby('quarter_tag', as_index=False)['Number'].sum().rename(columns={'quarter_tag': 'Date'})

方法2:手动映射月份(适配不支持英文月份缩写解析的环境)

import pandas as pd

# 定义月份到季度的映射关系
month_to_quarter = {
    'Jan': 1, 'Feb': 1, 'Mar': 1,
    'Apr': 2, 'May': 2, 'Jun': 2,
    'Jul': 3, 'Aug': 3, 'Sep': 3,
    'Oct': 4, 'Nov': 4, 'Dec': 4
}

# 拆分Date列为月份缩写和年份
df1[['month', 'year']] = df1['Date'].str.split('-', expand=True)

# 生成季度标识
df1['Date'] = 'Q' + df1['month'].map(month_to_quarter).astype(str) + '-' + df1['year']

# 分组求和得到结果
result = df1.groupby('Date', as_index=False)['Number'].sum()

两种方法得到的result都和你给出的期望输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 05:57:02