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

Python遍历Pandas DataFrame/Excel表 实现数据清洗写入模板

高效实现数据过滤与列删除:DataFrame vs Excel操作

结论:优先在DataFrame中处理,效率和代码简洁性都远高于直接操作Excel文件。DataFrame是内存中的结构化数据容器,所有过滤、删列操作都是内存级运算,无需频繁读写磁盘;而直接操作Excel(如openpyxl、xlwings)需要反复访问文件,速度慢且代码冗余,数据量越大差异越明显。

具体实现步骤(基于pandas)

假设你已将抓取的HTML表格数据存入pandas DataFrame df:

1. 过滤Progress Point为Cancelled的行

先确认DataFrame中对应列的名称(可通过print(df.columns)查看),然后用布尔索引过滤:

# 按列名过滤(推荐,列顺序变化不影响)
df = df[df['Progress Point'] != 'Cancelled']

# 若不确定列名,可按Excel列G的位置(索引从0开始为第6列)过滤
# df = df[df.iloc[:, 6] != 'Cancelled']

如果列值存在空格或大小写问题,先做清洗:

df['Progress Point'] = df['Progress Point'].str.strip().upper()
df = df[df['Progress Point'] != 'CANCELLED']

2. 删除6个冗余列

已知列名时直接指定删除:

# 替换成你要删除的实际列名
df = df.drop(columns=['冗余列1', '冗余列2', '冗余列3', '冗余列4', '冗余列5', '冗余列6'])

若按列位置删除(不推荐,列顺序变动会出错):

# 替换成你要删除的列索引(从0开始)
df = df.drop(df.columns[[0, 2, 4, 5, 7, 9]], axis=1)

3. 追加到Excel模板

处理完DataFrame后,再写入模板文件:

import pandas as pd
from openpyxl import load_workbook

# 加载现有模板
template_path = '发货报告模板.xlsx'
book = load_workbook(template_path)

# 初始化ExcelWriter,指定追加模式
with pd.ExcelWriter(template_path, engine='openpyxl', mode='a', if_sheet_exists='overlay') as writer:
    writer.book = book
    # 获取目标工作表的已有行数,从下一行开始追加(假设表头占2行)
    target_sheet = book['发货数据']
    start_row = target_sheet.max_row
    # 写入数据,不包含表头和索引
    df.to_excel(writer, sheet_name='发货数据', startrow=start_row, header=False, index=False)

新手提示

  • 操作前用df.head()、df.info()查看数据结构,确认列名和数据格式正确。
  • 若抓取的HTML表格列名混乱,可提前用df.columns = ['列1', '列2', ...]重命名,方便后续处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:05:24