Pandy: jak scalić wartości z wielu kolumn w jedną
Możesz użyć następujących metod, aby pogrupować wartości z wielu kolumn pandy DataFrame w jedną kolumnę:
Metoda 1: Scal wartości według domyślnej kolejności kolumn
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]
Metoda 2: Scal wartości przy użyciu określonej kolejności kolumn
df[' coalesce '] = df[[' col3 ', ' col1 ', ' col2 ']]. bfill (axis= 1 ). iloc [:, 0]
Poniższe przykłady pokazują, jak w praktyce używać każdej metody z następującą ramką DataFrame pand:
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
Metoda 1: Scal wartości według domyślnej kolejności kolumn
Poniższy kod pokazuje, jak połączyć wartości z kolumn punktów, asyst i zbiórek w jedną kolumnę, używając pierwszej niezerowej wartości z trzech kolumn jako wartości scalonej:
#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
Oto jak została wybrana wartość w kolumnie scalającej :
- Pierwsza linia: Pierwsza niezerowa wartość to 3.0 .
- Drugi wiersz: Pierwsza wartość niezerowa to 7,0 .
- Trzeci wiersz: Pierwsza niezerowa wartość to 19,0 .
- Czwarta linia: Pierwsza niezerowa wartość to 9,0 .
- Piąta linia: Pierwsza niezerowa wartość to 14,0 .
Metoda 2: Scal wartości przy użyciu określonej kolejności kolumn
Poniższy kod pokazuje, jak połączyć wartości w trzech kolumnach, analizując kolumny w następującej kolejności: asysty, zbiórki, punkty.
#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
Oto logika zastosowana do podjęcia decyzji, którą wartość umieścić w kolumnie scalającej :
- Jeśli wartość w kolumnie pomocniczej nie wynosi zero, użyj tej wartości.
- W przeciwnym razie, jeśli wartość w kolumnie odrzuceń nie wynosi zero, użyj tej wartości.
- W przeciwnym razie, jeśli wartość w kolumnie punktów nie wynosi zero, użyj tej wartości.
Uwaga : pełną dokumentację funkcji bfill() można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:
Jak połączyć dwie kolumny w Pandach
Jak sumować określone kolumny w Pandach
Jak sortować według wielu kolumn w Pandach