如何在Pandas多级列DataFrame中重新排序race层级的分类?
调整Pandas多级索引DataFrame中race列的子分类顺序
给定一个带有多级列索引(MultiIndex)的Pandas DataFrame,其列结构如下:
MultiIndex([( 'county', ''), ( 'month', ''), ( 'Gender', 'Declined to self-identify'), ( 'Gender', 'Female'), ( 'Gender', 'Male'), ( 'Gender', 'Non-Binary / Gender expansive'), ( 'age', '0-4'), ( 'age', '11-13'), ( 'age', '15-18'), ( 'age', '19-24'), ( 'age', '25-34'), ( 'age', '35-44'), ( 'age', '45-54'), ( 'age', '5-10'), ( 'age', '55-64'), ( 'age', '65_vove'), ( 'age', 'Unkown'), ( 'race', 'American Indian or Alaska Native'), ( 'race', 'Asian'), ( 'race', 'Black or African American'), ( 'race', 'Native Hawaiian or other Pacific Islander'), ( 'race', 'UNKnown'), ( 'race', 'White'), ('Ethnicity', 'Hispanic or Latinx'), ('Ethnicity', 'Non Hispanic or Latinx'), ('Ethnicity', 'Unknown')], names=['variable', 'value'])
需要将race对应的下层分类按以下指定顺序重新排列:
race_order = ['Black or African American', 'American Indian or Alaska Native','Asian', 'Native Hawaiian or other Pacific Islander','White', 'UNKnown']
实现步骤
- 保留非
race类列的原有顺序,避免打乱其他列结构 - 按照指定顺序生成新的
race列索引元组 - 合并列顺序并重新索引DataFrame
代码实现
# 定义指定的race分类顺序 race_order = ['Black or African American', 'American Indian or Alaska Native','Asian', 'Native Hawaiian or other Pacific Islander','White', 'UNKnown'] # 提取所有非race的列 non_race_cols = [col for col in df.columns if col[0] != 'race'] # 按指定顺序生成race列的索引元组 race_cols = [('race', val) for val in race_order] # 合并新的列顺序 new_columns = non_race_cols + race_cols # 重新设置DataFrame的列顺序 df = df[new_columns]
执行代码后,df.columns中的race子列会按指定顺序排列,其余列的原有顺序保持不变。
内容的提问来源于stack exchange,提问作者user1582755
相关产品推荐
相关产品推荐

