You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python Pandas从多Excel文件生成指定信息的大DataFrame

解决多Excel文件提取信息并合并为多列DataFrame的问题

你的思路方向是对的——循环处理每个文件提取信息,但问题出在每次循环都直接覆盖了Final变量,导致最后只保留了最后一个文件的数据,而且没有把各文件的列横向拼接起来。我来给你调整一下代码逻辑:

核心问题分析

你当前的代码里,每次循环都执行Final = pd.DataFrame(info),这相当于把Final重新赋值为当前文件的提取结果,之前循环的结果完全被覆盖了,所以最后只能看到最后一个文件的数据。要实现多列并排,我们需要先收集每个文件处理后的小DataFrame,再横向合并它们。

调整后的代码示例

import pandas as pd

# 先初始化一个空列表,用来存储每个文件处理后的DataFrame片段
processed_data = []

for idx, file_path in enumerate(filepaths):
    # 读取指定工作表
    df = pd.read_excel(file_path, sheet_name='Sheet1')
    # 执行你的提取逻辑,替换成你实际的otherslices代码
    info_slice = df[['目标列1', '目标列2']]  # 这里只是示例,你换成自己的切片逻辑
    
    # 给当前文件的列名加上标识(比如文件序号或文件名),避免列名重复导致合并冲突
    # 比如原来的列名是"销售额",处理后变成"销售额_文件1"、"销售额_文件2"
    info_slice.columns = [f"{col}_文件{idx+1}" for col in info_slice.columns]
    
    # 将处理好的片段加入列表
    processed_data.append(info_slice)

# 横向合并所有片段(axis=1表示按列拼接)
Final = pd.concat(processed_data, axis=1)

额外注意事项

  • 如果每个文件提取的行数不一致,pd.concat会自动在缺失的行填充NaN,如果需要保证行数一致,要检查你的提取逻辑是否统一(比如都是提取固定行数,或者按相同的索引匹配)。
  • 如果想用文件名而不是序号作为列名后缀,可以把f"{col}_文件{idx+1}"改成f"{col}_{os.path.basename(file_path)}",记得先导入os模块。

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

火山引擎 最新活动