我只想尝试将多索引中包含的信息提取到系列或数组中。不确定这是一个特定于熊猫的问题,还是仅仅是从python对象中提取属性的问题。
df = pd.DataFrame( { 'id' : np.arange(99,105) / 3,
'yr' : np.tile( np.array([2007,2008,2009]), 2 ),
'val': np.random.randn(6) } )
In [131]: df.set_index(['id','yr']).index
Out[131]: MultiIndex(levels=[[33, 34], [2007, 2008, 2009]],
labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]],
names=[u'id', u'yr'])
也就是说,我只想将以下信息提取到数组或系列中:
labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]]
以下代码将获取值,但我想要标签:
In [130]: df.set_index(['id','yr']).index.get_values()
Out[130]: array([(33, 2007), (33, 2008), (33, 2009), (34, 2007), (34, 2008), (34, 2009)], dtype=object)
还有一些其他的' get'多索引的方法,但我不能让他们中的任何一个做我想做的事情(并且我不确定他们中是否有任何一个做了我需要的东西)
答案 0 :(得分:3)
正如您所知,df.index
为您提供了一个类似字典的对象,可以在关键字下存储值。
MultiIndex(levels=[[33, 34], [2007, 2008, 2009]],
labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]],
names=[u'id', u'yr'])
关键字为levels
,labels
,names
。您可以通过
df.index.labels
给出了
FrozenList([[0, 0, 0, 1, 1, 1], [0, 1, 2, 0, 1, 2]])
和其他人一样。