Python Pandas如何不按排序规则自定义调整DataFrame索引顺序
解决方案
你可以直接用Pandas的reindex()方法或者loc索引选择实现自定义顺序重排行,不需要依赖固定排序规则。
操作步骤
- 先定义你需要的目标索引顺序列表
# 按你想要的顺序填写索引值 custom_order = ['GHI', 'ABC', 'DEF']
- 调用对应方法重排
方法1:使用reindex(推荐,兼容性更强)
df = df.reindex(custom_order)
方法2:使用loc索引选择
df = df.loc[custom_order]
两种方法实现效果完全一致,执行后即可得到你需要的排序结果。
补充说明:如果自定义列表里包含原DataFrame不存在的索引,对应行默认填充NaN;如果原索引有值不在自定义列表里,对应行默认会被丢弃。如果需要保留所有原索引,仅调整指定索引的顺序,剩余索引按原有顺序排在末尾,可以用如下逻辑处理:
custom_order = ['GHI', 'ABC', 'DEF'] # 筛选出不在自定义顺序里的原有索引,保留原有顺序 remaining_idx = [idx for idx in df.index if idx not in custom_order] # 拼接得到完整排序规则 full_order = custom_order + remaining_idx df = df.reindex(full_order)
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

