如何获取Pandas数据帧的sub_level索引值?

big*_*bug 4 pandas

我有一个多级数据框df:

>>> df
                   sales     cash
STK_ID RPT_Date                  
000568 20120630   51.926   42.845
       20120930   80.093   57.488
000596 20120630   22.278   18.247
       20120930   32.585   26.177
000799 20120630    9.291    6.513
       20120930   14.784    8.157
Run Code Online (Sandbox Code Playgroud)

我想得到sub_level索引的值列表'STK_ID',它将返回一个列表['000568','000596','000799'].
是否有任何直接的功能(不使用reset_index和获取列值)?

And*_*den 8

您正在寻找index.levels:

In [10]: df1.index.levels
Out[10]: 
[Index(['000568', '000596', '000799'], dtype=object),
 Int64Index([20120630, 20120930], dtype=int64)]

In [11]: df1.index.levels[0]
Out[11]: Index(['000568','000596','000799'], dtype=object)
Run Code Online (Sandbox Code Playgroud)

请注意,您可以看到索引名称:

In [12]: df1.index.names
Out[12]: ['STK_ID', 'RPT_Date']
Run Code Online (Sandbox Code Playgroud)

这些在这里的文档中讨论.

  • 我发现'df.index.get_level_values('STK_ID')',它可以保持值顺序,而'df.index.levels [0]'输出排序列表 (3认同)