2016-11-18 49 views
0

分多索引大熊貓數據幀的一個條目我有一個多索引的數據幀大熊貓看起來像這樣的(片段):如何通過另一

Smad3_pS423/425_customer 0 1  0.664263 
           2  0.209911 
           3  0.099809 
         5 1  0.059652 
           2  0.190174 
           3  0.138850 
a-Tubulin    0 1  0.072436 
           2  0.068282 
           3  0.087989 
         5 1  0.083960 
           2  0.076102 
           3  0.068119 

df.index的輸出是(與labels位縮短觀看用途):

MultiIndex(levels=[[u'Customer_Col1A2', u'Smad2_pS465/467 customer', u'Smad3_pS423/425_customer', u'Smad4_customer', u'Smad7_customer', u'a-Tubulin'], [u'0', u'10', u'120', u'180', u'20', u'240', u'30', u'300', u'45', u'5', u'60', u'90'], [u'1', u'2', u'3']], 
      labels=[[2, 2, 2, 2, 2, 2, 2, ... more_labels...]], 
      names=[u'Antibody', u'Time', u'Repeats']) 

我的問題是,什麼是劃分由Smad3_pS423/425_customer條目a-tubulin數據輸入的最佳方式?

一個繁瑣的方法是:

ab=[] 
    for i in self.data.index.get_level_values('Antibody'): 
     ab.append(i) 
    antibodies= list(set(ab)) 
    for i in antibodies: 
     print self.data.loc[i]/self.HK 

但這似乎並不喜歡這樣的方式pandas。有誰知道更簡單的方法來做到這一點? (我懷疑pandas可能已經建立在一個班輪內做到這一點)。 感謝

回答

1

如何只:

df.ix['a-Tubulin']/df.ix['Smad3_pS423/425_customer'] 

      3 
1 2   
0 1 0.109047 
    2 0.325290 
    3 0.881574 
5 1 1.407497 
    2 0.400170 
    3 0.490594 

這裏的DF數據框我用,你可以用df = pd.read_clipboard(sep=',', index_col=[0,1,2])

0,1,2,3 
Smad3_pS423/425_customer,0,1,0.664263 
Smad3_pS423/425_customer,0,2,0.20991100000000001 
Smad3_pS423/425_customer,0,3,0.09980900000000001 
Smad3_pS423/425_customer,5,1,0.059652 
Smad3_pS423/425_customer,5,2,0.190174 
Smad3_pS423/425_customer,5,3,0.13885 
a-Tubulin,0,1,0.072436 
a-Tubulin,0,2,0.06828200000000001 
a-Tubulin,0,3,0.087989 
a-Tubulin,5,1,0.08396 
a-Tubulin,5,2,0.076102 
a-Tubulin,5,3,0.068119 
+0

啊我不知道'ix'加載。這就是我所追求的。謝謝 – CiaranWelsh

+0

您可以提出問題並將問題標記爲已接受嗎? 閱讀更多關於索引[這裏](http://pandas.pydata.org/pandas-docs/stable/indexing.html):loc,iloc,at,iat和ix都被描述。 –

+0

認爲我做了 - 再次感謝。 – CiaranWelsh