Python自动化:遍历Excel文件提取指定数据并合并至单个DataFrame
合并多Excel提取数据为单行,生成统一DataFrame
问题描述
需要遍历指定Excel文件,提取每个文件中指定范围(如C6到C9)的内容,将每个文件的提取结果作为DataFrame的一行,最终生成一个统一的3行3列DataFrame,而不是当前得到的三个独立的3行1列DataFrame。
修正代码
from openpyxl import load_workbook import pandas as pd filesList = ["sample1.xlsx", "sample2.xlsx", "sample3.xlsx"] all_rows = [] for file in filesList: wb = load_workbook(file) ws = wb.active row_data = [] # 遍历目标单元格范围,提取每个值(若实际只有3个有效数据,可改为C6:C8) for cell_range in ws['C6':'C9']: # 因为是单列范围,每个cell_range仅包含一个单元格 row_data.append(cell_range[0].value) # 过滤空单元格值(如果范围包含无效空值) row_data = [val for val in row_data if val is not None] # 将当前文件的有效数据作为一行存入总列表 all_rows.append(row_data) # 转换为DataFrame,匹配期望的列名 df = pd.DataFrame(all_rows, columns=['0', '1', '2']) print(df)
关键修正说明
- 修复数据收集错误:原代码中
data_rows.append(data_rows)是递归添加自身,改为正确收集每个单元格的值到row_data,再将整行数据存入总列表。 - 调整数据结构:将每个文件的提取结果作为一行数据,而非单列,最终合并成统一的DataFrame。
- 处理空值:添加空值过滤逻辑,避免无效数据干扰最终格式。
- 指定列名:根据期望输出设置列名,确保格式完全匹配需求。
最终输出
0 1 2 0 apple sold No stock 1 orange not sold In stock 2 kiwi not sold In stock
内容的提问来源于stack exchange,提问作者stack
相关产品推荐
相关产品推荐

