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

如何基于DataFrame日期字段按财政年度汇总计算销售总额

解决方案

你可以直接使用pandas的日期处理和分组聚合功能实现需求,以下是完整可运行的代码:

第一步:修正示例代码错误并构造测试数据

你给出的示例代码存在变量名不统一的问题,已调整:

import pandas as pd

# 构造测试数据
Customer_ID = [1,2,3,4,5,6,7]
Sales_Info = [11,22,33,44,55,66,77]
begin_date = '2019-10-16'
# 修正变量名:将原代码里的units替换为实际定义的Sales_Info
df = pd.DataFrame({'Customer_ID':Customer_ID,
                   'Sales_Info':Sales_Info,
                   'Purchase_Date':pd.date_range(begin_date, periods=len(Sales_Info))})

第二步:按财政年度汇总销售额

这里分两种常用场景,你可以根据自身的财政年度规则选择:

场景1:财政年度与自然年一致(每年1月1日-12月31日)

直接提取日期的年份分组即可:

# 提取自然年作为财政年度
df['fiscal_year'] = df['Purchase_Date'].dt.year
# 按财政年度分组对销售额求和
result = df.groupby('fiscal_year', as_index=False)['Sales_Info'].sum()
print(result)

对应输出结果:

fiscal_year  Sales_Info
0         2019         308
场景2:自定义财政年度起始月份(比如每年4月1日到下一年3月31日为一个财政年度)

仅需要调整财政年度的计算逻辑即可,下面以4月为起始月举例,你可以修改start_month参数适配自己的规则:

start_month = 4  # 财政年度起始月份,可根据实际需求修改
# 计算财政年度:如果日期的月份大于等于起始月,财政年度为当前年,否则为前一年
df['fiscal_year'] = df['Purchase_Date'].apply(lambda x: x.year if x.month >= start_month else x.year -1)
# 按财政年度分组对销售额求和
result = df.groupby('fiscal_year', as_index=False)['Sales_Info'].sum()
print(result)

性能说明

以上方法使用pandas原生向量化操作,就算你的数据集有百万行级别也能快速处理,不会存在性能问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:54:08