2015-01-05 5 views
0

이것은 다소 복잡합니다. 나는 여러 dataframes에게 df, 아래와 같습니다 같은 열 인덱스를 가진 모든이 있습니다Python - 팬더 : 대각선에서 최대 값 찾기

 E   F   H    
row                  
CE  17.917153 10.875160 9.970251 
CF  9.780500 16.261098 10.021619  
CH  12.293967 10.608844 10.870527 
df 나의 목표는 자신의 indexcolumn 해당하는 최대 dataframe에서 값을 찾을 수 있습니다

. 이 최대 값 은 대각선 일 수 없습니다. 그렇게하려면 어떻게해야합니까?

+0

** ??? – aerokite

+0

혼란을 드려 죄송합니다. 'df'에서 추출한 두 개의 최대 값은 인덱스 (CE, E), (CF, F) 및 (CH, H)에있을 수 없습니다. – Plug4

답변

1
from pandas import * 


L = [[17.917153, 10.875160, 9.970251], 
    [9.780500, 16.261098, 10.021619], 
    [12.293967, 10.608844, 10.870527]] 

df = DataFrame(L) 

df2 = df.unstack().copy() 

df2.sort() 

IDX = df2[:].index 

IDX = list(reversed(IDX)) 


M = [] 

for x in IDX[1:]: 
    if(x[0]==x[1]): 
     continue 
    M.append(x); 
    if(len(M)==2): 
     break; 

Max1 = M[0] 
Max2 = M[1] 


print "Max1 : ", Max1, "->", df2[Max1] 
print "Max2 : ", Max2, "->", df2[Max2] 

출력 :

비대
Max1 : (0, 2) -> 12.293967 
Max2 : (1, 0) -> 10.87516 
     ^
     column 
+0

나는 첫 번째 최대치는 대각선에있다. 17.917153은 (CE, E)입니다. 내 최대 값은 대각선 일 수 없습니다. – Plug4

+0

그래서 우리는'df2 '에 대해 단순히 모든 레벨 = multilabel을 제거 할 수 있습니까? (0,0), (1,1), (2,2)를 제거 하시겠습니까? 그것은 대각선 요소를 제거 할 것입니다. – Plug4

+0

아니요. 대각선을 무시해야합니다. 이제 내 대답을 확인하십시오. 도움이 되길 바랍니다. – aerokite