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

如何向Pandas DataFrame追加字典键值且不重复生成列名行

问题解决方法

问题根因

你现有代码的逻辑是每次循环都单独创建一个子DataFrame并调用打印方法,pandas默认每次打印DataFrame都会输出表头(列名行),因此会出现重复的列名行。

方案1:合并为全量DataFrame(推荐用于后续分析、导出场景)

该方案是工业界最常用的规范写法,先把所有数据处理完成后合并为单个完整的DataFrame,后续不管是打印还是导出Excel都不会出现重复列名问题,代码如下:

import pandas as pd

# 初始化空列表存储所有处理后的子DataFrame
df_buffer = []
for k, v in Liste_phrases_retraduit.items():
    v.pop(0)
    split_rows = [i.split("\t") for i in v]
    tmp_df = pd.DataFrame(split_rows, columns=['identifiant', 'verbatim', 'etiquette'])
    tmp_df['id_langue'] = k
    df_buffer.append(tmp_df)

# 合并所有子表,ignore_index参数会重置全局行号
full_df = pd.concat(df_buffer, ignore_index=True)

# 打印全量数据
print(full_df)
# 直接导出到Excel,无重复列名
# full_df.to_excel("翻译结果汇总.xlsx", index=False)

方案2:循环打印仅显示一次列名(适用于仅需要按分组输出打印的场景)

如果你的需求就是按语言分组循环打印,不需要保留全量表,可以通过to_string的header参数控制仅第一次打印时输出列名:

import pandas as pd

# 标记是否是第一次打印
is_first = True
for k, v in Liste_phrases_retraduit.items():
    v.pop(0)
    split_rows = [i.split("\t") for i in v]
    df = pd.DataFrame(split_rows, columns=['identifiant', 'verbatim', 'etiquette'])
    df['id_langue'] = k
    # header参数控制是否输出列名
    print(df.head().to_string(header=is_first))
    is_first = False
    # 每组之间加空行分隔,匹配你预期的输出格式
    print("\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:12:03