首页 > 解决方案 > 如何删除行并重命名多索引表

问题描述

我有如下所示的多索引数据框,我想删除“A”上方的行(例如向上移动数据框)

metric data data
        F    K
        C    B
 A      2    3
 B      4    5
 C      6    7
 D      8    9

期望的输出

ALIAS  data data
metric  F    K
 A      2    3
 B      4    5
 C      6    7
 D      8    9

我查看了多个帖子,但找不到更接近于创建预期结果的内容。如何获得所需的输出?

https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html

标签: pythonpandasdataframepivot-table

解决方案


让我们尝试DataFrame.droplevel从列中删除级别 2,并DataFrame.rename_axis更新列轴名称:

df = df.droplevel(level=2, axis=1).rename_axis(['ALIAS', 'metric'], axis=1)

或使用索引等效方法Index.droplevelIndex.rename

df.columns = df.columns.droplevel(2).rename(['ALIAS', 'metric'])

df

ALIAS  data   
metric    F  K
A         2  3
B         4  5
C         6  7
D         8  9

设置:

import numpy as np
import pandas as pd

df = pd.DataFrame(
    np.arange(2, 10).reshape(-1, 2),
    index=list('ABCD'),
    columns=pd.MultiIndex.from_arrays([
        ['data', 'data'],
        ['F', 'K'],
        ['C', 'B']
    ], names=['metric', None, None])
)

df

metric data   
          F  K
          C  B
A         2  3
B         4  5
C         6  7
D         8  9

推荐阅读