Finden Sie die maximal zwei oder mehr Spalten mit pandas
Ich habe einen dataframe mit den Spalten A
,B
. Ich brauche zum erstellen einer Spalte C
so dass für jeden Datensatz /Zeile:
C = max(A, B)
.
Wie gehe ich dabei vor?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die maximale wie diese:
und so:
Wenn Sie wissen, dass "A" und "B" sind die einzigen Spalten, Sie könnten auch Weg mit
Und könnten Sie
.apply(max, axis=1)
auch, denke ich.@DSM ' s Antwort ist völlig in Ordnung, in fast jedem normalen Szenario. Aber wenn Sie der Typ, der Programmierer, der gehen will, muss ein wenig tiefer als die Ebene Oberfläche, die Sie möglicherweise interessieren, zu wissen, dass es ein wenig schneller zu rufen numpy-Funktionen der zugrunde liegenden
.to_numpy()
(oder.values
für <0.24) array, anstatt direkt den Aufruf der (cythonized) definierten Funktionen auf der DataFrame/Serie Objekten.Zum Beispiel, können Sie
ndarray.max()
entlang der ersten Achse.Wenn Ihre Daten hat
NaN
s, müssen Sienumpy.nanmax
:Können Sie auch
numpy.maximum.reduce
.numpy.maximum
ist ein ufunc (Universal Funktion), und jeder ufunc hat einereduzieren
:np.maximum.reduce
undnp.max
zu sein scheinen mehr oder weniger das gleiche (für die meisten normale Größe DataFrames)—und zufällig auch ein Schatten-schneller alsDataFrame.max
. Ich Stelle mir diesen Unterschied in etwa konstant bleibt, und ist aufgrund der internen Aufwand (Indizierung Ausrichtung, Umgang mit NaN, etc.).Die Grafik wurde erzeugt mit perfplot. Benchmarking-code, Referenz: