2013-01-21 95 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]'但水平按原樣存儲,所以訪問時應該更快:) –