为何DataFrame的shape返回总行数远大于末尾行的索引编号
现象原因
pandas DataFrame的索引值和实际存储的行数量没有强制绑定关系,dfg.shape[0]返回的是真实的总行数,你观察到的索引值偏小,核心原因是索引存在大量重复值,具体常见触发场景如下:
- 多个DataFrame拼接时未重置索引:比如你拼接了14份左右行索引为0~631225的DataFrame,默认会保留各子DataFrame的原有索引,拼接完成后总长度达到8529019,但最后一行的索引仍然是子DataFrame的最后一个索引值631225
- 执行过索引重建、分组聚合后手动赋值过重复索引:如果手动给DataFrame批量赋值了非唯一的整数索引,也会出现该情况
验证方法
执行以下代码即可确认:
# 检查索引是否存在重复 print(dfg.index.is_unique) # 查看唯一索引的总数量 print(dfg.index.nunique())
如果is_unique返回False,且nunique返回值约为631226,就能验证上述判断。
解决方案
如果需要使用连续不重复的整数行索引,执行重置索引操作即可:dfg = dfg.reset_index(drop=True)
执行后查看最后一行索引值就会变为8529018,和总行数匹配。
内容的提问来源于stack exchange,提问作者Rafael Araújo
相关产品推荐
相关产品推荐

