Pandas: cara menggabungkan nilai dari beberapa kolom menjadi satu
Anda dapat menggunakan metode berikut untuk mengelompokkan nilai dari beberapa kolom pandas DataFrame ke dalam satu kolom:
Metode 1: Gabungkan nilai berdasarkan urutan kolom default
df[' coalesce '] = df. bfill (axis= 1 ). iloc [:, 0]
Metode 2: Gabungkan Nilai Menggunakan Urutan Kolom Tertentu
df[' coalesce '] = df[[' col3 ', ' col1 ', ' col2 ']]. bfill (axis= 1 ). iloc [:, 0]
Contoh berikut menunjukkan cara menggunakan setiap metode dalam praktik dengan pandas DataFrame berikut:
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
Metode 1: Gabungkan nilai berdasarkan urutan kolom default
Kode berikut menunjukkan cara menggabungkan nilai dari kolom poin, assist, dan rebound menjadi satu kolom, menggunakan nilai bukan nol pertama dalam tiga kolom sebagai nilai gabungan:
#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
Berikut adalah cara nilai di kolom gabungan dipilih:
- Baris pertama: Nilai bukan nol pertama adalah 3.0 .
- Baris kedua: Nilai bukan nol pertama adalah 7.0 .
- Baris ketiga: Nilai bukan nol pertama adalah 19.0 .
- Baris keempat: Nilai bukan nol pertama adalah 9.0 .
- Baris kelima: Nilai bukan nol pertama adalah 14.0 .
Metode 2: Gabungkan Nilai Menggunakan Urutan Kolom Tertentu
Kode berikut menunjukkan cara menggabungkan nilai dalam tiga kolom dengan menganalisis kolom dalam urutan berikut: assist, rebound, poin.
#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
Berikut logika yang digunakan untuk memutuskan nilai mana yang akan ditempatkan di kolom gabungan :
- Jika nilai pada kolom pembantu bukan nol, gunakan nilai tersebut.
- Sebaliknya, jika nilai pada kolom pentalan bukan nol, gunakan nilai tersebut.
- Sebaliknya, jika nilai pada kolom poin bukan nol, gunakan nilai tersebut.
Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi bfill() di sini .
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:
Cara menggabungkan dua kolom di Pandas
Cara menjumlahkan kolom tertentu di Pandas
Cara mengurutkan berdasarkan beberapa kolom di Pandas