如何在pandas调用to_dict与from_dict时保留DataFrame的索引顺序
解决方案
问题根因
该索引重排问题是因为pandas的DataFrame.from_dict()方法在1.4.0之前的版本中,sort参数默认值为True,即便输入的是有序字典OrderedDict,也会默认对行索引按字母顺序排序。
可行解决方法
方案1:添加sort=False参数(推荐)
如果你的pandas版本≥1.1.0,直接在调用from_dict时关闭排序即可,改动最小:
import pandas as pd from collections import OrderedDict # 原有转换逻辑 r = df.to_dict(into=OrderedDict) # 重构时关闭排序即可保留原始索引顺序 new_df = pd.DataFrame.from_dict(r, sort=False)
方案2:手动重排索引(兼容所有版本)
如果你的pandas版本过旧不支持sort参数,可以从有序字典中提取原始索引顺序,手动重排:
r = df.to_dict(into=OrderedDict) new_df = pd.DataFrame.from_dict(r) # 从有序字典中提取原始索引顺序重排行索引 new_df = new_df.reindex(r['Column_1'].keys())
如果你的DataFrame包含多列,取任意列的键作为索引顺序,或者提前存储原始df的index备用均可。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

