2017-08-14 81 views
0

我在探索MultiIndex,但由於某些原因,非常基本的索引不適用於我。熊貓MultiIndex索引不起作用

索引:

In [119]: index 
Out[119]: MultiIndex(levels=[[u'Group 1', u'Group 2'], [u'A01', u'A02', u'A03', u'A04']], 
     labels=[[0, 1, 0, 0], [0, 1, 2, 3]], 
     names=[u'Group', u'Well']) 

的數據幀:

df = pd.DataFrame(np.random.randn(4,2), index=index) 

該數據幀具有索引:

In [124]: df.index 
Out[124]: 
MultiIndex(levels=[[u'Group 1', u'Group 2'], [u'A01', u'A02', u'A03', u'A04']], 
    labels=[[0, 1, 0, 0], [0, 1, 2, 3]], 
    names=[u'Group', u'User']) 

然而索引:

df['Group 1'] 

只能導致錯誤

KeyError: 'Group 1' 

如何這個問題能解決?

回答

1

要使用索引進行切片,您需要loc作爲數據幀,因爲basic indexing with []用於選擇列;由於數據幀不包含名爲Group 1列,它提出了一個關鍵的錯誤:

df.loc['Group 1'] 

#    0   1 
#Well  
#A01 -0.337359 -0.113165 
#A03  0.212714 1.619850 
#A04  1.411829 -0.892723 

基本的索引表:

# Object Type   Selection  Return Value Type 
#  Series  series[label]  scalar value 
# DataFrame frame[colname]  Series corresponding to colname 
#  Panel panel[itemname]  DataFrame corresponding to the itemname 

loc索引表:

#Object Type Indexers 
#  Series s.loc[indexer] 
# DataFrame df.loc[row_indexer,column_indexer] 
#  Panel p.loc[item_indexer,major_indexer,minor_indexer]