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

如何用Pandas高效生成季度各周库存剩余量计算列

高效生成Pandas季度每周库存剩余列的方法

需求说明

现有Pandas DataFrame包含物料季度预测用量、当前库存,已通过qty/13算出每周消耗量weekly,需要快速生成对应季度13周的库存剩余列,替代手动逐个添加列的低效方式。

示例数据构造

先还原你的示例数据集,方便后续测试:

import pandas as pd

data = {
    'item_number': ['M17-4R1.0', 'M17-4R1.25', 'M17-4R1.375', 'M17-4R1.5', 'M17-4R1.625', 'M17-4R.369', 'M17-4R.375'],
    'qty': [20.79, 22.24, 36.12, 74.29, 46.35, 86.79, 87.36],
    'quarter': [2]*7,
    'onhand': [32.00, -42.02, 77.72, 134.12, 63.10, 16.00, 702.72],
    'weekly': [1.59884615384615, 1.71075384615385, 2.7782, 5.71446923076924, 3.56513076923077, 6.67630769230769, 6.72026153846154]
}
df = pd.DataFrame(data)

解决方案

方法1:循环生成(简单直观)

适合数据量较小的场景,代码可读性强:

# 遍历1-13周,生成对应库存列
for week in range(1, 14):
    df[f'week_{week}_inventory'] = df['onhand'] - df['weekly'] * week

方法2:向量化广播(高效性能)

利用Pandas的向量化操作,避免循环,数据量大时性能更优:

# 生成1-13周的序列
weeks = range(1, 14)
# 构造周数矩阵,与原数据行数匹配
week_matrix = pd.DataFrame([weeks]*len(df), index=df.index)
# 广播计算所有周的库存剩余
inventory_matrix = df['onhand'].values[:, None] - df['weekly'].values[:, None] * week_matrix
# 重命名列并合并到原DataFrame
inventory_matrix.columns = [f'week_{w}_inventory' for w in weeks]
df = pd.concat([df, inventory_matrix], axis=1)

结果说明

两种方法都会生成week_1_inventory至week_13_inventory共13列,每列对应当周结束后的剩余库存,计算逻辑完全符合当前库存 - 每周消耗量 × 周数的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:20:10