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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *