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
相关产品推荐
相关产品推荐

