Pandas: як об'єднати значення з кількох стовпців в один


Ви можете використовувати такі методи, щоб згрупувати значення з кількох стовпців pandas DataFrame в один стовпець:

Спосіб 1: об’єднайте значення за умовчанням у порядку стовпців

 df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]

Спосіб 2. Об’єднайте значення за допомогою певного порядку стовпців

 df[' coalesce '] = df[[' col3 ', ' col1 ', ' col2 ']]. bfill (axis= 1 ). iloc [:, 0]

Наступні приклади показують, як використовувати кожен метод на практиці з такими pandas DataFrame:

 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

Спосіб 1: об’єднайте значення за умовчанням у порядку стовпців

Наступний код показує, як об’єднати значення зі стовпців очок, передач і підбирань в один стовпець, використовуючи перше ненульове значення в трьох стовпцях як об’єднане значення:

 #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

Ось як було обрано значення в стовпці злиття :

  • Перший рядок: перше ненульове значення було 3,0 .
  • Другий рядок: перше ненульове значення було 7,0 .
  • Третій рядок: перше ненульове значення було 19,0 .
  • Четвертий рядок: перше ненульове значення було 9,0 .
  • П’ятий рядок: перше ненульове значення було 14,0 .

Спосіб 2. Об’єднайте значення за допомогою певного порядку стовпців

Наступний код показує, як об’єднати значення в трьох стовпцях, аналізуючи стовпці в такому порядку: передачі, підбирання, очки.

 #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

Ось логіка, яка була використана, щоб вирішити, яке значення розмістити в стовпці злиття :

  • Якщо значення в допоміжному стовпці не дорівнює нулю, використовуйте це значення.
  • В іншому випадку, якщо значення в стовпці відмов не дорівнює нулю, використовуйте це значення.
  • В іншому випадку, якщо значення в стовпці балів не дорівнює нулю, використовуйте це значення.

Примітка . Повну документацію щодо функції bfill() можна знайти тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:

Як об’єднати два стовпці в Pandas
Як підсумувати певні стовпці в Pandas
Як сортувати за кількома стовпцями в Pandas

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *