如何使用Pandas根据列值重新调整DataFrame的行顺序?
解决方案
你的问题出在直接通过pd.DataFrame构造器修改索引只会替换索引标签,不会重新排列数据行。下面分两种场景给出正确实现方式:
场景1:ID是普通列
如果你的ID是DataFrame的一列(原数据索引为默认的0、1、2),按以下步骤调整:
import pandas as pd # 原数据构造示例 data = { "ID": ["AA", "BB", "CC"], "Q1": [1, 5, 6], "Q2": [2, 5, 7], "Q3": [4, 5, 7] } df = pd.DataFrame(data) # 1. 将ID列设为索引 df = df.set_index("ID") # 2. 按指定顺序重新排列行 df = df.reindex(["BB", "CC", "AA"]) # 可选:把ID转回普通列 df = df.reset_index()
场景2:ID已经是索引
如果ID本身就是DataFrame的索引(原数据索引为["AA", "BB", "CC"]),直接用reindex即可:
# 原数据构造示例 data = { "Q1": [1, 5, 6], "Q2": [2, 5, 7], "Q3": [4, 5, 7] } df = pd.DataFrame(data, index=["AA", "BB", "CC"]) # 直接按指定顺序重排 df = df.reindex(["BB", "CC", "AA"])
关键说明
reindex方法会根据传入的索引列表,匹配并重新排列对应的数据行,这才是调整行顺序的正确逻辑;而直接修改索引标签只会改变行名,不会挪动数据位置。
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

