我得到了一个带有多层列的多层数据帧,df.Columns是

ultiIndex([(   '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_order = ['Black or African American', 'American Indian or Alaska Native','Asian',
              'Native Hawaiian or other Pacific Islander','White', 'UNKnown']

推荐答案

Example Code

让我们进行样例输入

import pandas as pd
import numpy as np

a = [('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')]

np.random.seed(0)
df = pd.DataFrame(np.random.randint(0, 10, (3, 26)), columns=pd.MultiIndex.from_tuples(a,  names=['variable', 'value']))

Df:

enter image description here


df1 = df.columns.to_frame(index=False)
race_order = ['Black or African American', 'American Indian or Alaska Native','Asian', 'Native Hawaiian or other Pacific Islander','White', 'UNKnown']
df1.loc[df1['variable'].eq('race'), 'value'] = race_order
out = df[pd.MultiIndex.from_frame(df1, names=['variable', 'value'])]

输出:

enter image description here

Python相关问答推荐

时间序列分解

删除最后一个pip安装的包

在线条上绘制表面

用Python解密Java加密文件

如何使用数组的最小条目拆分数组

Python中绕y轴曲线的旋转

python中字符串的条件替换

如果满足某些条件,则用另一个数据帧列中的值填充空数据帧或数组

ConversationalRetrivalChain引发键错误

找到相对于列表索引的当前最大值列表""

提高算法效率的策略?

我对这个简单的异步者的例子有什么错误的理解吗?

Autocad使用pyautocad/comtypes将对象从一个图形复制到另一个图形

如何从数据框列中提取特定部分并将该值填充到其他列中?

Pythonquests.get(Url)返回Colab中的空内容

Polars定制函数返回多列

高效地计算数字数组中三行上三个点之间的Angular

如何通过特定导入在类中执行Python代码

了解如何让库认识到我具有所需的依赖项

如何使用count()获取特定日期之间的项目