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

如何将多个docx文件内容分别存入DataFrame不同列并导出Excel?

问题原因

  • 每次遍历docx文件时,都单独创建了仅包含当前docx内容的单列DataFrame,且每次都调用to_excel()覆写同一个输出文件,之前生成的列自然会被覆盖
  • pd.DataFrame()和df_last.to_excel()的代码位置错误,被放在了遍历文档段落的内层循环中,每读一个段落就会重新生成DF、覆写一次文件,逻辑完全错误
  • 没有设计多列合并的逻辑,所有列的内容没有汇总到同一个DataFrame中

修正后代码

import os
import pandas as pd
from docx import Document

def get_files(extension, location):
    v_doc = []
    for root, dirs, files in os.walk(location):
        for t in files:
            if t.endswith(extension):   
                # 拼接绝对路径,避免Document找不到目标文件
                v_doc.append(os.path.join(root, t))
    return v_doc

# 提前创建空DataFrame,用来汇总所有列内容
df_all = pd.DataFrame()

file_list = get_files('.docx', paths)
for index, file in enumerate(file_list, start=1):
    doc = Document(file)
    # 直接提取非空段落文本,简化中间变量
    new = [f.text for f in doc.paragraphs if f.text.strip()]
    column_label = f'column{index}'
    # 把当前列追加到总DF中,两列长度不一致的位置会自动填充NaN
    df_all[column_label] = pd.Series(new)

# 全部文件处理完成后统一导出Excel
df_all.to_excel('output_dummy.xlsx', index=False)

核心修改说明

  • 提前初始化全局空DataFramedf_all,所有docx的内容都作为新列追加到该DF中,实现多列共存
  • 将DF生成、导出逻辑移到循环最外层,避免多次覆写输出文件
  • 优化了段落提取的写法,减少冗余中间变量
  • 修复了原代码仅存储文件名、不拼接绝对路径的隐患,避免跨目录读取文件时报错
  • 用enumerate替代手动计数的index变量,逻辑更简洁
  • 导出时添加index=False参数,避免输出多余的行索引列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 23:54:02