【问题标题】:How to remove row and rename multiindex table如何删除行并重命名多索引表
【发布时间】:2021-09-05 16:05:57
【问题描述】:

我有如下所示的多索引数据框,我想删除“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

【问题讨论】:

    标签: python pandas dataframe pivot-table


    【解决方案1】:

    让我们尝试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
    

    【讨论】:

    • 谢谢!一个问题,你怎么知道 rename_axis 修改了第一列?
    • 不客气。它没有。这些是每个列级别的轴名称。对于 pivot_table,轴名称通常是旧的列标题。它描述了新列标题的内容。但是这些值不是数据框中的数据,只是附加的标头注释。
    • hımm 如果要修改“data”和“f”列,你会怎么做? ssorry 要求此以了解更多信息。你的回答已经很优雅了!
    • “修改‘数据’和‘f’列”是什么意思?怎么修改?
    • 你需要rename他们。这里有很多很好的例子 -> Rename MultiIndex columns in Pandas
    猜你喜欢
    • 2016-12-29
    • 1970-01-01
    • 2013-03-14
    • 2018-09-14
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    相关资源
    最近更新 更多