切片pandas.DataFrame的第二个Multiindex

时间:2017-02-10 18:35:10

标签: pandas slice multi-index

我有一个形式为

的pandas Dataframe
              "a"          "b"          "c"        #first level index
            0, 1, 2       0, 1, 2      0, 1, 2     #second level index
index
0          1,2,3         6,7,8       5,3,4
1          2,3,4         7,5,4       9,2,5
2          3,4,5         4,5,6       0,4,5
...

表示进行测量的点(a,b或c)以及在此点发生的测量结果(0,1,2)。

我想做以下事情:

  • 在样本中选取一个切片(比如测量0处每个点上的第一次测量)
  • 表示每个第i次测量(均值(“a”[0],“b”[0],“c”[0]),均值(“a”[1],“b”[1], “c”[1]),...)

我试图了解大熊猫Multiindex文档,但是没有设法切换到第二级。

这是列索引:

MultiIndex(levels=[['a', 'b', 'c', ... , 'y'], [0, 1, 2, ... , 49]],
       labels=[[0, 0, 0, ... , 0, 1, 1, 1, ... 1, ..., 49, 49, 49, ... 49]])

索引

Float64Index([204.477752686, 204.484664917, 204.491577148,  ..., 868.723022461], dtype='float64', name='wavelength', length=43274)

使用

df[:][0]

产生键错误(0不在索引中)

df.iloc[0]

返回水平切片

0    "a":(1,2,3), "b":(6,7,8), "c":(5,3,4)

但我想

"a":(1,2,3), "b":(6,7,4), "c":(5,9,0)

THX提供任何帮助

PS:版本:pandas-0.19,python-3.4

1 个答案:

答案 0 :(得分:0)

诀窍是指定轴......

JScrollBar

提供每个点的第0次测量。 由于我在二级索引上使用整数,我不确定这是否实际上产生了标签" 0"或者只是DataFrame中的第0个测量,与标签无关。

但对于我的用例,这实际上已经足够了。