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


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

Способ 1: объединить значения по порядку столбцов по умолчанию

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

Способ 2. Объединение значений с использованием определенного порядка столбцов

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

В следующих примерах показано, как использовать каждый метод на практике со следующим DataFrame pandas:

 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *