n番目のランク付けされた値を見つけてカラム名を返す方法を見つけようとしています。たとえば、データフレームが与えられた場合:データフレームの行ごとにn番目にランク付けされたカラムIDを取得する - Python/Pandas
df = pd.DataFrame(np.random.randn(5, 4), columns = list('ABCD'))
# Return column name of "MAX" value, compared to other columns in any particular row.
df['MAX1_NAMES'] = df.idxmax(axis=1)
print df
A B C D MAX1_NAMES
0 -0.728424 -0.764682 -1.506795 0.722246 D
1 1.305500 -1.191558 0.068829 -1.244659 A
2 -0.175834 -0.140273 1.117114 0.817358 C
3 -0.255825 -1.534035 -0.591206 -0.352594 A
4 -2.408806 -1.925055 -1.797020 2.381936 D
これは、行の中で最も高い値を見つけ、発生した列の名前を返します。
MAX2_NAMES
行で二番目に大きい値である
A B C D MAX1_NAMES MAX2_NAMES
0 -0.728424 -0.764682 -1.506795 0.722246 D A
1 1.305500 -1.191558 0.068829 -1.244659 A C
2 -0.175834 -0.140273 1.117114 0.817358 C D
3 -0.255825 -1.534035 -0.591206 -0.352594 A D
4 -2.408806 -1.925055 -1.797020 2.381936 D C
:しかし、私は、私が所望の値の特定のランクを選択し、うまくいけば、次のようなデータフレームを取得することができますケースを必要としています。
ありがとうございました。
非常にいいですが、私はスピードに関係なくどんな解決策も得られませんでしたが、数値的なソーティングパフォーマンスのヒントは便利です。 – ajsp