Ich versuche eine Methode zu finden, um den n-ten Wert zu finden und den Spaltennamen zurückzugeben. So zum Beispiel eines Datenrahmen gegeben:Ermitteln der n-ten Spalten-IDs pro Zeile eines Datenrahmens - 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
Dies würde den höchsten Wert in den Zeilen finden und die Spaltennamen zurück, wo sie sich ereignen. Aber ich brauche den Fall, dass ich den besonderen Rang des gewünschten Wertes wählen kann, und hoffentlich einen Datenrahmen wie folgt erhalten:
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
Wo MAX2_NAMES
ist der zweitgrößte Wert in der Zeile.
Danke.
Sehr schön, ich war mehr bestrebt, jede Lösung unabhängig von der Geschwindigkeit zu bekommen, aber die numpige Sortierleistung Tipp wird sich als nützlich erweisen. – ajsp