Вы можете использовать следующие методы для объединения значений из нескольких столбцов кадра данных pandas в один столбец:
Метод 1: объединение значений по порядку столбцов по умолчанию
df['coalesce'] = df.bfill (axis= 1 ). iloc [:, 0]
Метод 2: объединение значений с использованием определенного порядка столбцов
df['coalesce'] = df[['col3', 'col1', 'col2']]. bfill (axis= 1 ). iloc [:, 0]
В следующих примерах показано, как использовать каждый метод на практике со следующими пандами DataFrame:
import pandas as pd
import numpy as np
#create DataFrame
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
Вот логика, которая использовалась, чтобы решить, какое значение поместить в столбец объединения :
- Если значение в столбце Assets не равно нулю, используйте это значение.
- В противном случае, если значение в столбце подборов не равно нулю, используйте это значение.
- В противном случае, если значение в столбце точек не равно нулю, используйте это значение.
Примечание.Полную документацию по функции bfill() можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Как объединить два столбца в Pandas
Как суммировать определенные столбцы в Pandas
Как сортировать по нескольким столбцам в Pandas