2014-09-18 39 views
0

我有一個MultiIndex的pandas系列,我想獲得屬於MultiIndex一級的整數行號。獲取MultiIndex系列的整數行索引

舉例來說,如果我有樣本數據s

s = pandas.Series([10, 23, 2, 19], 
        index=pandas.MultiIndex.from_product([['a', 'b'], ['c', 'd']])) 

,看起來像這樣:

a c 10 
    d 23 
b c 2 
    d 19 

我想對應的水平b行號。所以在這裏,我會得到[2, 3]作爲輸出,因爲最後兩行在b之下。另外,我真的只需要屬於b的第一行。

我想要得到這些數字,以便我可以在系列中進行比較。假設我有五個具有b級別的系列對象。這些是時間序列數據,並且b對應於在一些觀察期間存在的條件(並且c是子條件等)。我想看看哪個系列在同一時間有條件。

編輯:爲了澄清,我不需要比較價值本身,只是指數。例如,在R如果我有這個數據幀:

d = data.frame(col_1 = c('a','a','b','b'), col_2 = c('c','d','c','d'), col_3 = runif(4)) 

然後命令which(d$col_1 == 'b')會產生我想要的結果。

回答

0

如果您想索引的索引是最外面的一個,你可以使用loc

df.loc['b'] 

爲了得到第一排我找到head方法最簡單

df.loc['b'].head(1) 

的慣用方式做你的問題的第二部分如下。假設你的系列被命名爲series1,series2和series3。

big_series = pd.concat([series1, series2, series3]) 
big_series.loc['b'] 
+0

謝謝 - 我實際上需要原始序列中的整數索引號。因此's.loc ['b']。head(1)'將返回內容,但我需要它返回's'內容所在的位置。 – user2034412 2014-09-18 20:29:58

+0

如果只是比較每個系列中的locatoins,則應將所有系列放在列表中,然後連接它們。你可以通過使用'loc'來獲得所有的值 – b10n 2014-09-18 20:43:58