【问题标题】:Get names of MultiIndex level 0 after using dropna()使用 dropna() 后获取 MultiIndex 级别 0 的名称
【发布时间】:2020-11-08 10:48:14
【问题描述】:

我有一个多索引数据框。如果任何单元格为 NaN,我想要做的是删除列,然后获取 0 级索引的名称。

data=
        A        B        C
      d   e    f   g    h   i
0     1   2    3   4   NaN NaN
1     1   2    3   4   NaN NaN
2     1   2    3   4   NaN NaN
3     1   2    3   4   NaN NaN

我使用了data.dropna(axis= 1, inplace= True),得到了如下结果。

        A        B  
      d   e    f   g
0     1   2    3   4
1     1   2    3   4
2     1   2    3   4
3     1   2    3   4

现在我使用了 print(list(data.columns.levels[0])) 但显示以下输出。

['A', 'B', 'C']

我如何只得到 ['A', 'B']?

提前致谢。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你可以在dropna之后remove the unused levels

    data.dropna(axis= 1, inplace= True)
    data.columns= data.columns.remove_unused_levels()
    

    print(data.columns.levels[0])
    #returns Index(['A', 'B'], dtype='object')
    

    【讨论】:

    • 那行得通。谢谢。几个问题: 1> 不会 dropna() 删除数据框中的 C 列吗? 2> 使用data.columns= data.columns.remove_unused_levels(),我们是否替换了数据框中的列?
    • 当列被多索引时。数据帧的切片不会删除多索引级别,因此我们删除当前切片中未使用的级别并分配回新数据帧中的列
    猜你喜欢
    • 2018-11-04
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多