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

如何用Pandas为网页获取的合并CSV文件正确建立连续索引

解决DataFrame合并后索引重复并重置为连续序列的问题

嘿,我来帮你搞定这个索引的问题!看起来你在合并多个DataFrame时踩了几个小坑,导致索引重复,没法得到1到258的连续索引。我来一步步给你捋清楚:

先说说你之前代码的问题

  • append的用法(以及弃用提示):你用df1.append(frames, sort=False)的写法其实能运行,但append方法已经被pandas弃用了,官方更推荐用pd.concat来合并多个DataFrame,可读性和稳定性更好。
  • 错误的concat写法:你后来尝试的pd.concat([df1],[df2],[df3],... axis=1, join='inner').sort_index()有两个关键错误:
    • 不该把每个DataFrame单独放进一个列表,正确的做法是把所有要合并的DataFrame放在同一个列表里;
    • axis=1是按列合并(把DataFrame并排拼接),而你想要的是按行合并(把DataFrame上下堆叠),应该用默认的axis=0(可以省略不写);
    • sort_index()只是对现有索引排序,但原来的索引是各个子DataFrame的索引叠加,排序后还是会重复,没法生成连续的新索引。

正确的解决步骤

步骤1:用pd.concat正确合并多个DataFrame

先把所有要合并的DataFrame放进一个列表,然后用pd.concat做行合并:

frames = [df1, df2, df3, df4, df5, df6]
# 行合并,sort=False保留原有列顺序
result = pd.concat(frames, sort=False)

步骤2:重置索引为连续序列

合并后,索引是各个子DataFrame的索引拼接起来的,肯定会重复。我们用reset_index()来生成新的连续索引,drop=True表示丢弃原来的旧索引列:

# 生成从0开始的连续索引(0到257)
result = result.reset_index(drop=True)

步骤3(可选):让索引从1开始到258

如果你想要索引从1而不是0开始,只需要给索引加1就行:

# 把索引调整为1到258
result.index = result.index + 1
# 或者用range更直观
result.index = range(1, len(result)+1)

一步到位的代码

把上面的步骤合并成一行也可以:

frames = [df1, df2, df3, df4, df5, df6]
result = pd.concat(frames, sort=False).reset_index(drop=True)
result.index = range(1, len(result)+1)

这样处理后,你的result就会拥有从1到258的连续唯一索引啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:09:12