2013-01-21 151 views
4

我有一个多层次的数据帧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 

我想sub_level指数'STK_ID',将返回的['000568','000596','000799']列表的值列表。
是否有任何直接的功能来做到这一点(不使用reset_index并获得列值)?

回答

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) 

注意你所看到的目录名称:

In [12]: df1.index.names 
Out[12]: ['STK_ID', 'RPT_Date'] 

这些在文档here讨论。

+0

谢谢。熊猫有许多魔术功能。 – bigbug

+3

我也发现'df.index.get_level_values('STK_ID')',它可以保持价值秩序,而'df.index.levels [0]'输出排序列表 – bigbug

+0

@bigbug你是对的,你可以使用' df.index.get_level_values('STK_ID')。unique()== df.index.levels [0]'但水平按原样存储,所以访问时应该更快:) –