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

基于前一行balans值计算当前库存weight的实现问题

库存滚动计算实现方案

方法1:Excel/WPS表格实现

  • 先把数据按日期降序排序(最新日期在首行,和你提供的样例顺序一致)
  • 首行weight保留已知的初始值
  • 第二行开始的weight单元格输入公式:=上一行weight单元格 + 上一行balans单元格,比如表头在第1行、首行数据在第2行,第二行的weight单元格公式为=B2+C2,下拉填充所有行即可

方法2:Python Pandas实现

  • 核心逻辑:先按日期降序排序,再用错位累加balans值加初始weight得到结果
  • 示例代码:
import pandas as pd

# 导入你的数据,这里用样例做演示
df = pd.DataFrame({
    'weight': [500, 0, 0, 0],
    'balans': [50, -30, 120, -233],
    'date': ['2021-10-15', '2021-10-14', '2021-10-13', '2021-10-12']
})

# 日期格式转换+降序排序,确保顺序正确
df['date'] = pd.to_datetime(df['date'])
df = df.sort_values('date', ascending=False).reset_index(drop=True)

# 计算滚动库存
initial_weight = df.loc[0, 'weight']
df['weight'] = initial_weight + df['balans'].shift(fill_value=0).cumsum()

方法3:SQL实现(支持窗口函数的数据库,如MySQL8.0+、PostgreSQL等)

WITH sorted_data AS (
    SELECT 
        weight,
        balans,
        date,
        ROW_NUMBER() OVER (ORDER BY date DESC) as rn
    FROM 你的库存表名
)
SELECT 
    CASE WHEN rn = 1 THEN weight 
         ELSE (SELECT weight FROM sorted_data WHERE rn = 1) + SUM(balans) OVER (ORDER BY rn ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING)
    END as weight,
    balans,
    date
FROM sorted_data
ORDER BY rn;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:06:04