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

使用Python将Pandas DataFrame插入Word表格时重复值问题排查

问题原因及解决办法

你写的add_table_to_word_doc和make_rows_bold这两个函数逻辑没问题,问题十有八九出在你没贴出来的循环代码上,常见的几种错误情况和修复方式如下:

常见错误场景

1. 循环里重复传同一个DataFrame

要是你的循环代码不小心每次都传最后那个DataFrame(比如data3_summary),那生成的文档里自然全是一模一样的表格。比如错误写法:

doc = Document()
dfs = [data1_summary, data2_summary, data3_summary]
for _ in dfs:
    # 踩坑:每次都传同一个data3_summary,循环白跑
    doc = add_table_to_word_doc(data3_summary, doc)
doc.save("output.docx")

2. 循环里反复新建Document对象

如果每次循环都重新创建Document(),之前加的表格会直接被覆盖,最后文档里只剩最后一个表格,看起来就像所有表格都变成同一个值了。错误写法:

dfs = [data1_summary, data2_summary, data3_summary]
for df in dfs:
    # 踩坑:每次循环都建新文档,之前的表格全丢了
    doc = Document()
    doc = add_table_to_word_doc(df, doc)
doc.save("output.docx")

3. 创建DataFrame时不小心共享了数据

虽然你贴的三个DataFrame是独立的,但如果实际循环里创建df时复用了同一个字典(比如改同一个字典再生成df),会导致多个df指向同一份数据。比如错误写法:

doc = Document()
base_data = {'Header': [], 'Val1': []}
for i in range(3):
    # 踩坑:修改同一个base_data字典,所有df都会同步变化
    base_data['Header'] = [f'L{i+1}']
    base_data['Val1'] = [float(100*(i+1))]
    df = pd.DataFrame(base_data)
    doc = add_table_to_word_doc(df, doc)
doc.save("output.docx")

正确的循环写法

用下面的代码就能把三个不同的DataFrame正确加到同一个文档里:

# 先建一个空文档
doc = Document()

# 把三个DataFrame放到列表里遍历
dfs = [data1_summary, data2_summary, data3_summary]
for df in dfs:
    # 每次传当前循环的df,更新文档
    doc = add_table_to_word_doc(df, doc)
    # 可选:表格之间加个空段落,排版更舒服
    doc.add_paragraph()

# 最后保存文档
doc.save("result.docx")

额外验证小技巧

  • 先单独测每个DataFrame:分别调用add_table_to_word_doc加单个df,看生成的文档对不对,确认每个df的数据本身没问题
  • 循环里打印每个df的df.shape或者df.head(),确保循环确实在遍历三个不同的DataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:10:35