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

Pandas如何计算门店销售数据中各店铺上一次记录的销售额

实现方案

你不需要单独拆分每个门店的临时表再合并,用pandas自带的分组偏移函数就能高效实现,逻辑如下:

  1. 先把日期列转成datetime类型,避免字符串排序出错
  2. 按「门店地址」+「销售记录日期」升序排列,保证同个门店的记录按时间先后排序
  3. 按门店地址分组后,对销售额列使用shift(1)取上一行的数值,就是该门店上一次被记录的销售额

完整代码

import pandas as pd

# 示例数据
df = pd.DataFrame({'Date' : ['01-01-2011','01-01-2011','01-01-2011','01-07-2011','01-07-2011','01-08-2011'],
                   'Store_Address' : ['1000E, Chicago IL','1000E 67th, Chicago IL','1000 N Central Park Chicago IL',
                                      '1000 A Central Park Chicago IL','1000 B Central Park Chicago IL',
                                      '1000 C Central Park Chicago IL'],
                   'Sales': [1000, 2000, 1500, 3000, 2000, 2500]})

# 转换日期格式
df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y')
# 按门店+日期排序
df = df.sort_values(by=['Store_Address', 'Date']).reset_index(drop=True)
# 生成本次销售的上次销售额列
df['last_record_sales'] = df.groupby('Store_Address')['Sales'].shift(1)

说明

  • 首次出现的门店没有上一次销售记录,对应的last_record_sales会返回NaN,你可以按需用df['last_record_sales'] = df['last_record_sales'].fillna(0)把空值替换成0或者其他默认值
  • 如果同一个门店同一天存在多条销售记录,你可以先按日期对同门店的销售额做聚合,再执行上述逻辑;如果需要保留明细记录,可以在排序维度里补充其他唯一标识(比如销售流水号)避免同日期同门店的记录排序混乱

内容的提问来源于stack exchange,提问作者Chee Yuan Ng

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:27:03