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

如何在DataFrame中按日期分组新增当日销量总计汇总行

Pandas 实现按日期追加汇总行方案

你可以通过分组计算汇总值、拼接原表、排序调整三个步骤实现需求,具体实现代码如下:

  • 首先导入依赖并构造原始数据集
import pandas as pd

# 原始数据
df = pd.DataFrame({
    'Date': ['01/01/08', '01/01/08', '01/01/08', '01/06/08', '01/06/08', '01/06/08'],
    'Item': ['Fruit', 'Confectionary', 'Appliance', 'Confectionary', 'Fruit', 'Appliance'],
    'Purchased': [48, 42, 11, 16, 19, 50]
})
  • 按日期分组生成Overall汇总行
# 按日期聚合计算总销量,固定汇总行的Item值为Overall
summary_df = df.groupby('Date', as_index=False).agg(
    Purchased=('Purchased', 'sum'),
    Item=('Item', lambda _: 'Overall')
)
# 调整列顺序和原表保持一致
summary_df = summary_df[df.columns]
  • 拼接原表与汇总表,调整行顺序让汇总行落在对应日期的末尾
# 合并原始数据和汇总数据
final_df = pd.concat([df, summary_df], ignore_index=True)

# 增加排序辅助列,保证每个日期下原始商品行在前,Overall行在后
final_df['rank'] = final_df['Item'].map(lambda x: 1 if x == 'Overall' else 0)
final_df = final_df.sort_values(by=['Date', 'rank']).drop(columns='rank').reset_index(drop=True)

执行后得到的结果完全符合预期:

Date           Item  Purchased
0  01/01/08          Fruit         48
1  01/01/08  Confectionary         42
2  01/01/08      Appliance         11
3  01/01/08        Overall        101
4  01/06/08  Confectionary         16
5  01/06/08          Fruit         19
6  01/06/08      Appliance         50
7  01/06/08        Overall         85

注意事项

  • 该方法会保留原始数据中每个日期下商品行的原有顺序,不会打乱原始数据排列
  • 如果数据量超过10万行,可以把排序逻辑替换为pandas分类类型排序,运行效率会更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:45:36