Pandas MultiIndex索引不起作用

时间:2017-08-14 14:25:43

标签: python pandas multi-index

我正在探索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 个答案:

答案 0 :(得分: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]