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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *