如何为多工作表DataFrame的列添加值并生成新多表DataFrame
批量修改Excel多工作表的DataFrame列值
问题背景
我有一个包含40个工作表的Excel文件(示例简化为2个),每个工作表均有3列。需要对所有工作表执行相同操作:给first列的每个值加4,second列的每个值加8,处理后需保留原工作表的对应结构,生成包含所有处理后工作表的新数据集合。
现有代码片段(存在缺陷):
ddf = pd.DataFrame() for i in range(40): df = pd.read_excel(xls, i)
单工作表的原始处理逻辑(效率低且未完成赋值):
for i in range(len(df["first"])): df["first"].iloc[i] + 4 df["second"].iloc[i] + 8
解决方案
优化后的批量处理代码
import pandas as pd # 打开目标Excel文件 xls = pd.ExcelFile("你的Excel文件路径.xlsx") # 用字典存储处理后的所有工作表(键为工作表名,值为处理后的DataFrame) processed_sheets = {} # 遍历所有工作表 for sheet_name in xls.sheet_names: # 读取当前工作表数据 df = pd.read_excel(xls, sheet_name=sheet_name) # 批量修改列值(矢量化操作,无需逐行循环) df["first"] += 4 df["second"] += 8 # 将处理后的DataFrame存入字典 processed_sheets[sheet_name] = df # 可选:将所有处理后的工作表写入新Excel文件 with pd.ExcelWriter("处理完成的文件.xlsx") as writer: for sheet_name, df in processed_sheets.items(): df.to_excel(writer, sheet_name=sheet_name, index=False)
关键说明
- 自动识别工作表:通过
xls.sheet_names获取所有工作表名称,无需手动指定数量,适配任意数量的工作表 - 矢量化操作:
df["first"] += 4会对列内所有元素批量计算,比逐行循环效率提升数十倍,同时避免iloc赋值的潜在索引问题 - 保留工作表结构:用字典存储处理后的DataFrame,键对应原工作表名称,完美保留原文件的工作表对应关系
- 批量写入输出:通过
pd.ExcelWriter可一次性将所有处理后的工作表写入新文件,保持原结构不变
内容的提问来源于stack exchange,提问作者Megan
相关产品推荐
相关产品推荐

