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

如何正确合并两个默认索引的Pandas DataFrame,避免额外索引列?

问题描述

有如下简化示例数据:

list = [
    {
     "age": 1234,
     "val": 0.5,
     "val2": 0.2
    },
    {
     "age": 1234,
     "val": 0.2,
     "val2": 0.8
    },
]

通过frame = pandas.DataFrame(list)创建Pandas DataFrame,会生成0到len(list)-1的默认索引,DataFrame如下:

age  val  val2
0    1234  0.5  0.2
1    1234  0.2  0.8

随后通过frame.to_csv('file.csv')将其保存为CSV文件。现在需要创建另一个完全相同的DataFrame,加载旧DataFrame后将两者合并,使新数据排在旧数据之后,且索引从0重新连续编号。尝试使用pd.concat([old_frame, new_frame], ignore_index=True)合并后,数据出现了两列索引:

age  val  val2
0     0    1234  0.5  0.2
1     1    1234  0.2  0.8

请问如何正确合并这两个DataFrame,避免每次合并都产生额外的索引列?

解决方法

问题根源是保存CSV时默认写入了原DataFrame的索引,加载时该索引被当作普通数据列保留,导致合并后出现双重索引。按以下步骤处理即可解决:

  • 保存CSV时排除索引
    原代码frame.to_csv('file.csv')会默认把索引写入CSV,修改为以下代码,避免生成额外的索引列:

    frame.to_csv('file.csv', index=False)
    
  • 加载已有带索引的CSV文件
    如果已经生成了带索引的CSV,加载时需指定将原索引列恢复为DataFrame的索引,而非数据列:

    old_frame = pd.read_csv('file.csv', index_col=0)
    

    或者直接忽略加载时的索引列(不保留原索引):

    old_frame = pd.read_csv('file.csv', index_col=False)
    
  • 合并DataFrame
    确保两个DataFrame都没有多余的索引列后,执行合并操作:

    combined_frame = pd.concat([old_frame, new_frame], ignore_index=True)
    

    此时合并后的DataFrame会生成从0开始的连续单一索引,无额外索引列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:30:50