Python循环实现:取上一行DC inventory列值进行计算需求求助
用Python处理Excel表格的跨行计算方案
假设你用pandas库(处理表格数据的常用工具,新手易上手),直接给你可运行的代码方案,匹配你的需求:
步骤1:安装依赖(未安装的话)
打开命令行执行:
pip install pandas openpyxl
(openpyxl是读取xlsx格式文件的必要依赖)
步骤2:核心代码实现
假设你的Excel文件名为data.xlsx,表格列名分别是DC Inventory、Shipm to DC、US 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




