2016-10-05 4 views
0

DataFrame에서 가장 큰 5 개의 숫자를 찾고이 5 개의 값에 대한 인덱스 이름과 열 이름을 저장하고 싶습니다.팬더 데이터 프레임의 인덱스와 열 이름이있는 최대 (n) 숫자

나는 nlargest() 및 idxmax 메서드를 사용하려고하지만 원하는 것을 얻지 못하고 있습니다. 내 코드는 다음과 같습니다.

import numpy as np 
import pandas as pd 
from pandas import Series, DataFrame 
df = DataFrame({'a': [1, 10, 8, 11, -1],'b': [1.0, 2.0, 6, 3.0, 4.0],'c': [1.0, 2.0, 6, 3.0, 4.0]}) 

친절하게 알려주십시오. 어떻게 할 수 있습니까? 열 이름은 주어진 값

max_vals = df.stack().nlargest(5) 

이 당신에게 첫 번째 수준은 원래 DataFrame의 인덱스 인, multiindex, 두 번째 수준을 가진 시리즈를 줄 것입니다 : 당신에게

답변

2

사용 stacknlargest 감사 . 여기 max_vals 보이는 무엇과 같은 :

3 a 11.0 
1 a 10.0 
2 a  8.0 
    b  6.0 
    c  6.0 

명시 적으로, 인덱스 및 열 이름을 얻을 max_vals의 인덱스에 get_level_values을 사용하려면 :

max_idx = max_vals.index.get_level_values(0) 
max_cols = max_vals.index.get_level_values(1) 

max_idx의 결과 :

Int64Index([3, 1, 2, 2, 2], dtype='int64') 

max_cols의 결과 :

Index(['a', 'a', 'a', 'b', 'c'], dtype='object') 
+0

감사합니다. @root. 나는 오늘이 방법을 배웠고 그것을 얻을 수있었습니다. 당신의 노력에 감사드립니다. – Mari