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

如何使用Pandas高效计算各时间步所有物品最新数量总和

高性能Pandas实现方案

实现思路

  • 全程采用Pandas内置向量化运算,完全避免Python层遍历,十万级以上数据量下性能是循环、apply类实现的数十到上百倍
  • 利用分组位移计算每个物品的历史值差值,累加差值即可直接得到截止到当前时间步所有物品最新值的总和,逻辑简洁且无冗余计算

完整实现代码

import pandas as pd

# 假设输入df为包含timestep、article、volume三列的原始DataFrame
# 第一步:按时间步升序排序,保证处理顺序符合要求
df = df.sort_values('timestep', ignore_index=True)

# 第二步:计算每个物品上一次出现的数量值,首次出现的物品历史值填充为0
df['prev_vol'] = df.groupby('article')['volume'].shift(fill_value=0)

# 第三步:计算当前行的增量:当前数量 减去 该物品上一次的数量
df['delta'] = df['volume'] - df['prev_vol']

# 第四步:对增量累加求和,得到截止到当前时间步的所有物品最新值总和
df['volume'] = df['delta'].cumsum()

# 输出仅保留需要的两列
result = df[['timestep', 'volume']]

结果验证

用你提供的示例数据运行后,完整输出结果如下(你给出的示例输出漏了timestep=155的行,代码会默认保留所有时间步,若不需要可根据业务规则额外过滤):

timestepvolume
3520
3725
12332
15542
17853
23450
47861

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:45:07