Ich habe einen DataFrame wie diesen:
In [7]:
frame.head()
Out[7]:
Communications and Search Business General Lifestyle
0 0.745763 0.050847 0.118644 0.084746
0 0.333333 0.000000 0.583333 0.083333
0 0.617021 0.042553 0.297872 0.042553
0 0.435897 0.000000 0.410256 0.153846
0 0.358974 0.076923 0.410256 0.153846
Hier möchte ich fragen, wie man einen Spaltennamen erhält, der für jede Zeile den Maximalwert hat. Die gewünschte Ausgabe lautet wie folgt:
In [7]:
frame.head()
Out[7]:
Communications and Search Business General Lifestyle Max
0 0.745763 0.050847 0.118644 0.084746 Communications
0 0.333333 0.000000 0.583333 0.083333 Business
0 0.617021 0.042553 0.297872 0.042553 Communications
0 0.435897 0.000000 0.410256 0.153846 Communications
0 0.358974 0.076923 0.410256 0.153846 Business
Wenn Sie eine Spalte erstellen möchten, die den Namen der Spalte mit dem Maximalwert enthält, aber nur eine Teilmenge der Spalten berücksichtigt, verwenden Sie eine Variation der Antwort von @ ajcr:
quelle
df['Max'] = df[df.columns.difference(['Foo','Bar'])].idxmax(axis=1)
Sie könnten
apply
auf Datenrahmen undargmax()
von jeder Zeile über bekommenaxis=1
Hier ist ein Benchmark , wie langsam zu vergleichen
apply
Methode istidxmax()
fürlen(df) ~ 20K
quelle