使用Python Pandas处理错位Excel数据实现产品产量批量求和统计
实现方案
这个需求完全可以实现,以下是可直接复用的实现方法,适合处理大体积Excel文件,逻辑比手动定位行范围更简洁高效:
前置依赖安装
首先安装需要的第三方库:pip install pandas openpyxl
完整可复用脚本
import pandas as pd # 1. 读取Excel文件,仅读取需要的两列,大文件下更节省内存 # 替换下面的文件路径为你每月的Excel文件路径即可 df = pd.read_excel( "你的Excel文件路径.xlsx", usecols=["Product Number", "Produced Amount"], # 对应你的两列列名,可按需修改 dtype={"Product Number": str} # 强制产品编号为字符串格式,避免自动转数字出错 ) # 2. 填充产品编号:将产品编号向下填充,直到下一个产品编号出现,给每行产量匹配对应产品 df["Product Number"] = df["Product Number"].ffill() # 3. 清理产量列:把非数值的无效值(比如空值、样本中的'row')替换为空,再转数值格式 df["Produced Amount"] = pd.to_numeric(df["Produced Amount"], errors="coerce") # 4. 按产品编号分组,对产量求和,跳过空值 result = df.groupby("Product Number", as_index=False)["Produced Amount"].sum() # 5. 输出结果到Excel报表 result.to_excel("产量统计结果.xlsx", index=False) # 如果需要直接在控制台看结果可以取消下面的注释 # print(result)
逻辑说明
- 核心用到pandas的
ffill()向前填充方法,自动把产品编号填充到下方所有空行,直到遇到下一个有效产品编号,自动划分每个产品对应的产量行范围,不需要手动计算每个产品的行位置,代码更简洁,大文件下运行效率更高 pd.to_numeric的errors="coerce"参数会自动把无法转成数字的内容(比如你样本里的'row'、空单元格)转成空值,求和时会自动跳过,不会影响结果准确性- 按照你提供的样本数据运行后,输出结果和你预期的完全一致:
Product Number Produced Amount A00 001 188 A00 005 5 A00 034 61
内容的提问来源于stack exchange,提问作者thisisforwork
相关产品推荐
相关产品推荐

