我正在探索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'
如何解决这个问题?
答案 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]