You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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']

实现步骤

  1. 保留非race类列的原有顺序,避免打乱其他列结构
  2. 按照指定顺序生成新的race列索引元组
  3. 合并列顺序并重新索引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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:47:25