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

如何自动化实现按日期过滤Pandas DataFrame并按SKU分组求和?

自动处理2017年所有日期的SKU库存汇总方案

嘿,我明白你现在的需求了——手动处理单个日期太麻烦,想自动搞定2017年所有日期的SKU库存汇总对吧?这里有两个实用的方案,看你更需要哪种:

方案1:一步到位生成所有日期的汇总结果(推荐)

不需要逐个拆分日期,直接用groupby同时按日期和SKU分组求和,这是最高效的方式:

首先先还原你的原始DataFrame:

import pandas as pd

data = {
    'Date': ['1/1/2017', '1/1/2017', '1/1/2017', '1/1/2017', 
             '2/1/2017', '2/1/2017', '2/1/2017', '2/1/2017', '2/1/2017'],
    'SKU': ['X1', 'X2', 'X1', 'X2', 'X1', 'X2', 'X2', 'X1', 'X1'],
    'Balance': [8, 45, 47, 16, 14, 67, 9, 66, 158]
}
df = pd.DataFrame(data)

然后执行汇总代码:

# 按日期+SKU分组,计算Balance的总和
all_days_summary = df.groupby(['Date', 'SKU'], as_index=False).agg({'Balance': 'sum'})

print(all_days_summary)

输出结果:

Date SKU  Balance
0   1/1/2017  X1       55
1   1/1/2017  X2       61
2   2/1/2017  X1      238
3   2/1/2017  X2       76

这个结果直接包含了所有日期的SKU汇总,不需要再逐个处理。

方案2:生成每个日期单独的汇总DataFrame

如果你确实需要把每个日期的结果单独存成独立的DataFrame,可以用字典来存储(比单独命名变量更规范,避免变量名混乱):

# 获取所有唯一的2017年日期
unique_dates = df['Date'].unique()

# 创建字典来存储每个日期的汇总结果
date_summary_dfs = {}

for date in unique_dates:
    # 过滤当前日期的数据
    daily_data = df[df['Date'] == date]
    # 按SKU分组求和(保留Date列也可以)
    daily_summary = daily_data.groupby(['SKU', 'Date'], as_index=False).agg({'Balance': 'sum'})
    # 将结果存入字典,键为日期字符串
    date_summary_dfs[date] = daily_summary

# 调用某一天的结果,比如1/1/2017
print(date_summary_dfs['1/1/2017'])

输出1/1/2017的结果:

SKU      Date  Balance
0  X1  1/1/2017       55
1  X2  1/1/2017       61

这样你可以通过date_summary_dfs['日期字符串']快速访问任意日期的汇总DataFrame。

补充说明

因为你的Date列是字符串类型,直接用==过滤完全没问题;如果后续需要处理日期排序、筛选年份等操作,也可以把Date转换成datetime类型:

df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%Y')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:15:31