Pandas: so führen sie werte aus mehreren spalten zu einer zusammen
Sie können die folgenden Methoden verwenden, um Werte aus mehreren Spalten eines Pandas-DataFrames in einer einzigen Spalte zu gruppieren:
Methode 1: Werte nach Standardspaltenreihenfolge zusammenführen
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]
Methode 2: Werte mithilfe einer bestimmten Spaltenreihenfolge zusammenführen
df[' coalesce '] = df[[' col3 ', ' col1 ', ' col2 ']]. bfill (axis= 1 ). iloc [:, 0]
Die folgenden Beispiele zeigen, wie jede Methode in der Praxis mit dem folgenden Pandas DataFrame verwendet wird:
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' points ': [np.nan, np.nan, 19, np.nan, 14], ' assists ': [np.nan, 7, 7, 9, np.nan], ' rebounds ': [3, 4, np.nan, np.nan, 6]}) #view DataFrame print (df) points assists rebounds 0 NaN NaN 3.0 1 NaN 7.0 4.0 2 19.0 7.0 NaN 3 NaN 9.0 NaN 4 14.0 NaN 6.0
Methode 1: Werte nach Standardspaltenreihenfolge zusammenführen
Der folgende Code zeigt, wie die Werte aus den Spalten „Punkte“, „Vorlagen“ und „Rebounds“ in einer einzigen Spalte zusammengeführt werden, wobei der erste Wert ungleich Null in den drei Spalten als zusammengeführter Wert verwendet wird:
#create new column that contains first non-null value from three existing columns
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]
#view updated DataFrame
print (df)
points assists rebounds coalesce
0 NaN NaN 3.0 3.0
1 NaN 7.0 4.0 7.0
2 19.0 7.0 NaN 19.0
3 NaN 9.0 NaN 9.0
4 14.0 NaN 6.0 14.0
So wurde der Wert in der Zusammenführungsspalte ausgewählt:
- Erste Zeile: Der erste Wert ungleich Null war 3,0 .
- Zweite Zeile: Der erste Wert ungleich Null war 7,0 .
- Dritte Zeile: Der erste Wert ungleich Null war 19,0 .
- Vierte Zeile: Der erste Wert ungleich Null war 9,0 .
- Fünfte Zeile: Der erste Wert ungleich Null war 14.0 .
Methode 2: Werte mithilfe einer bestimmten Spaltenreihenfolge zusammenführen
Der folgende Code zeigt, wie die Werte in den drei Spalten zusammengeführt werden, indem die Spalten in der folgenden Reihenfolge analysiert werden: Assists, Rebounds, Punkte.
#coalesce values in specific column order
df[' coalesce '] = df[[' assists ', ' rebounds ', ' points ']]. bfill (axis= 1 ). iloc [:, 0]
#view updated DataFrame
print (df)
points assists rebounds coalesce
0 NaN NaN 3.0 3.0
1 NaN 7.0 4.0 7.0
2 19.0 7.0 NaN 7.0
3 NaN 9.0 NaN 9.0
4 14.0 NaN 6.0 6.0
Hier ist die Logik, die verwendet wurde, um zu entscheiden, welcher Wert in die Zusammenführungsspalte eingefügt werden soll:
- Wenn der Wert in der Hilfsspalte nicht Null ist, verwenden Sie diesen Wert.
- Andernfalls verwenden Sie diesen Wert, wenn der Wert in der Spalte „Bounces“ nicht Null ist.
- Andernfalls, wenn der Wert in der Punktespalte nicht Null ist, verwenden Sie diesen Wert.
Hinweis : Die vollständige Dokumentation für die Funktion bfill() finden Sie hier .
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in Pandas ausgeführt werden:
So kombinieren Sie zwei Spalten in Pandas
So summieren Sie bestimmte Spalten in Pandas
So sortieren Sie in Pandas nach mehreren Spalten