2014-06-26 53 views
15

有誰知道是否可以使用DataFrame.loc方法從MultiIndex中進行選擇?我有以下DataFrame,並且希望能夠訪問位於'Dwell'列中的值,索引爲('at', 1)('at', 3)('at', 5)等(非順序)。在pandas中使用.loc和MultiIndex?

我很想能夠做到像data.loc[['at',[1,3,5]], 'Dwell'],類似於data.loc[[1,3,5], 'Dwell']語法正規指數(它返回一個3人組成的系列停留值)。

我的目的是選擇數據的任意子集,僅對該子集執行一些分析,然後使用分析結果更新新值。我打算使用相同的語法爲這些數據設置新的值,因此在這種情況下鏈接選擇器不會真正起作用。

下面是數據幀的切片我的工作:

  Char Dwell Flight ND_Offset Offset 
QGram               
at 0  a  100  120 0.000000  0 
     1  t  180  0 0.108363  5 
     2  a  100  120 0.000000  0 
     3  t  180  0 0.108363  5 
     4  a  20  180 0.000000  0 
     5  t  80  120 0.108363  5 
     6  a  20  180 0.000000  0 
     7  t  80  120 0.108363  5 
     8  a  20  180 0.000000  0 
     9  t  80  120 0.108363  5 
     10 a  120  180 0.000000  0 

謝謝!

回答

15

如果你在0.14版本中,你可以簡單地傳遞一個元組.loc如下:

df.loc[('at', [1,3,4]), 'Dwell'] 
7

嘗試cross-section索引:

In [68]: df.xs('at', level='QGram', drop_level=False).loc[[1,4]] 
Out[68]: 
     Char Dwell Flight ND_Offset Offset 
QGram           
at 1 t 180  0 0.108363  5 
     4 a  20  180 0.000000  0 
相關問題