2016-10-05 13 views
0

DataFrameで最大の5つの数字を見つけ、これらの5つの値のインデックス名とカラム名を保存したいと考えています。Pandas DataFrameのインデックスとカラム名を持つ最大(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]}) 

私はこれをどのように達成することができますか?あなた

答えて

2

使用stacknlargestありがとう:

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

これはあなたの最初のレベルは、元のデータフレームのインデックスであり、第二のレベルは、与えられた値の列名であるマルチインデックス、とのシリーズを与えます。明示的max_valsのインデックスにget_level_valuesを使用し、インデックス名とカラム名を取得するには

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

:ここmax_valsは次のようになります

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

関連する問題