提取多个Excel文件指定行后保存结果异常求助
问题分析与解决方案
你的代码核心问题在于保存位置错误,循环内每次执行data.to_excel()会把单个Excel文件的内容覆盖到输出文件,而不是保存汇总后的aggregate数据。另外append方法已被弃用,推荐使用更稳定的concat。
修正后的代码
import pandas as pd import os # 初始化存储列表,用来收集所有要汇总的行 rows_to_aggregate = [] dir_path = "/Users/gulfcarbon2/Downloads/Modis/absorption file/" # 遍历目录下的所有Excel文件 for file in os.listdir(dir_path): if file.endswith(".xlsx"): # 安全拼接文件路径 file_path = os.path.join(dir_path, file) # 读取Excel文件 data = pd.read_excel(file_path) # 提取第二行(iloc[1]),转置后加入列表 row2 = pd.DataFrame(data.iloc[1]).transpose() rows_to_aggregate.append(row2) print(f"已处理文件: {file}") # 一次性拼接所有行 aggregate = pd.concat(rows_to_aggregate, ignore_index=True) # 保存汇总结果到Excel aggregate.to_excel(os.path.join(dir_path, "aggregate1.xlsx"), index=False) # 打印前5行验证 print(aggregate.head(5))
关键修改点
- 移出保存语句:把
to_excel放到循环外,确保保存的是所有行汇总后的完整数据,而非单个文件内容。 - 改用concat拼接:替换弃用的
append,用concat批量拼接数据,性能更优且避免版本兼容问题。 - 路径安全处理:用
os.path.join拼接路径,避免因手动拼接出现的路径分隔符错误。 - ignore_index=True:重置汇总后的索引,避免原文件索引重复导致的混乱。
内容的提问来源于stack exchange,提问作者Arnab paul
相关产品推荐
相关产品推荐

