You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Python批量导入数百个Excel指定列数据并转置导出

解决Excel数据批量转置与合并问题

嘿,你已经搞定了最麻烦的文件遍历部分,剩下的转置和DataFrame合并其实没那么复杂!我来帮你把代码捋顺,解决当前的瓶颈。

先说说你现有代码的小问题

你循环里的df = []会每次清空之前的数据,相当于白忙活了前面的遍历;而且现在只是打印数据,没有把每个文件的实体、指标和答案结构化地存起来,自然没法转置和合并。

调整后的完整代码

我帮你重新写了代码,直接实现“提取指定列→转置→合并导出”的需求:

import pandas as pd
import glob
import os

# 设置数据文件夹路径
path = r'C:\Users\data'
# 用glob批量获取所有xlsx文件(比手动判断后缀更靠谱)
files_xls = glob.glob(os.path.join(path, "*.xlsx"))

# 第一步:从第一个文件提取所有指标名称,作为最终表格的行索引
first_data = pd.read_excel(files_xls[0], 'Assessment')
answers_to_copy = list(range(20, 32)) + list(range(33, 113))
# 获取指定行的指标名称列表
indicators = first_data['IndicatorName'].iloc[answers_to_copy].tolist()

# 初始化最终DataFrame:行是指标,后续每个文件的实体作为列
final_df = pd.DataFrame(index=indicators)

# 第二步:遍历每个文件,提取数据并添加到最终表格
for f in files_xls:
    data = pd.read_excel(f, 'Assessment')
    # 获取当前文件的实体名称(来自Definition列第12行,因为iloc是从0开始计数)
    entity_name = data['Definition'].iloc[11]
    # 获取对应指标的答案列表
    answers = data['Answer'].iloc[answers_to_copy].tolist()
    # 将当前实体的答案作为一列添加到最终表格,完成转置效果
    final_df[entity_name] = answers

# 第三步:导出转置合并后的结果到新Excel
final_df.to_excel(os.path.join(path, '合并转置结果.xlsx'), index=True)

代码逻辑说明

  • 指标先行:先从第一个文件提取所有指标作为行,保证所有文件的指标顺序统一,避免转置后混乱
  • 列对应实体:每个Excel文件对应一个实体,把它的所有答案作为一列添加到总表格,天然实现了“行转列”的需求
  • 批量合并:循环过程中自动把每个文件的数据追加到总DataFrame,不用手动处理拼接逻辑

额外小提示

  • 如果担心不同文件的指标数量/顺序不一致,可以在循环里加个判断:比如对比当前文件的指标和初始列表是否一致,不一致就打印文件名提醒你
  • 如果遇到实体名称重复的情况,可以把文件名和实体名拼接起来(比如entity_name = f"{os.path.basename(f)}_{entity_name}"),避免列名冲突

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:03:11