You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
注册

Python循环实现:取上一行DC inventory列值进行计算需求求助

用Python处理Excel表格的跨行计算方案

假设你用pandas库(处理表格数据的常用工具,新手易上手),直接给你可运行的代码方案,匹配你的需求:

步骤1:安装依赖(未安装的话)

打开命令行执行:

pip install pandas openpyxl

openpyxl是读取xlsx格式文件的必要依赖)

步骤2:核心代码实现

假设你的Excel文件名为data.xlsx,表格列名分别是DC InventoryShipm to DCUS Forecast,我们要生成新列Updated Inventory,规则为:

  • 第一行无前置行,直接用当前行的DC Inventory作为初始值
  • 从第二行开始:Updated Inventory = 上一行的DC Inventory + 当前行的Shipm to DC + 当前行的US Forecast

手动循环写法(直观易懂)

import pandas as pd

# 读取Excel文件,默认读取第一个工作表
df = pd.read_excel("data.xlsx")

# 设置第一行的初始值
df.loc[0, "Updated Inventory"] = df.loc[0, "DC Inventory"]

# 从第二行开始逐行计算
for i in range(1, len(df)):
    prev_dc_inv = df.loc[i-1, "DC Inventory"]
    current_ship = df.loc[i, "Shipm to DC"]
    current_forecast = df.loc[i, "US Forecast"]
    df.loc[i, "Updated Inventory"] = prev_dc_inv + current_ship + current_forecast

# 把结果保存到新Excel文件
df.to_excel("updated_data.xlsx", index=False)

高效简化写法(利用pandas内置方法)

pandas的shift()可直接获取上一行数据,无需手动写循环,代码更简洁:

import pandas as pd

df = pd.read_excel("data.xlsx")

# shift(1)取上一行的DC Inventory,第一行shift后为NaN,用fillna填充初始值
df["Updated Inventory"] = df["DC Inventory"].shift(1).fillna(df["DC Inventory"].iloc[0]) + df["Shipm to DC"] + df["US Forecast"]

df.to_excel("updated_data.xlsx", index=False)

注意事项

  • 确保代码里的列名和Excel里的完全一致(包括空格、大小写),否则会报错
  • 若表格存在空值,可先执行df.fillna(0)将空值替换为0,避免计算异常

内容的提问来源于stack exchange,提问作者Guillermo Nieva Sánchez

火山引擎 最新活动