Pandas: cara menggabungkan kolom yang memiliki nama yang sama
Anda dapat menggunakan sintaks dasar berikut untuk menggabungkan kolom dalam pandas DataFrame yang memiliki nama kolom yang sama:
#define function to merge columns with same names together def same_merge (x): return ' , '. join (x[ x.notnull ()]. astype (str)) #define new DataFrame that merges columns with same names together df_new = df. groupby (level= 0 , axis= 1 ). apply ( lambda x: x.apply (same_merge,axis= 1 ))
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: Menggabungkan Kolom dengan Nama yang Sama di Pandas
Misalkan kita memiliki panda DataFrame berikut:
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' A ': [5, 6, 8, np.nan, 4, np.nan, np.nan], ' A1 ': [np.nan, 12, np.nan, 10, np.nan, 6, 4], ' B ': [2, 7, np.nan, np.nan, 2, 4, np.nan], ' B1 ': [5, np.nan, 6, 15, 1, np.nan, 4]}) #rename columns so there are duplicate column names df. columns = [' A ', ' A ', ' B ', ' B '] #view DataFrame print (df) AABB 0 5.0 NaN 2.0 5.0 1 6.0 12.0 7.0 NaN 2 8.0 NaN NaN 6.0 3 NaN 10.0 NaN 15.0 4 4.0 NaN 2.0 1.0 5 NaN 6.0 4.0 NaN 6 NaN 4.0 NaN 4.0
Perhatikan bahwa dua kolom diberi nama “A” dan dua kolom diberi nama “B.”
Kita bisa menggunakan kode berikut untuk menggabungkan kolom yang memiliki nama kolom yang sama dan menggabungkan nilainya dengan koma:
#define function to merge columns with same names together def same_merge (x): return ' , '. join (x[ x.notnull ()]. astype (str)) #define new DataFrame that merges columns with same names together df_new = df. groupby (level= 0 , axis= 1 ). apply ( lambda x: x.apply (same_merge,axis= 1 )) #view new DataFrame print (df_new) AB 0 5.0 2.0,5.0 1 6.0,12.0 7.0 2 8.0 6.0 3 10.0 15.0 4 4.0 2.0,1.0 5 6.0 4.0 6 4.0 4.0
DataFrame baru menggabungkan kolom dengan nama yang sama dan menggabungkan nilainya dengan koma.
Jika Anda ingin menggunakan pemisah yang berbeda, cukup ganti pemisah koma dengan yang lain di fungsi same_merge() .
Misalnya, kode berikut menunjukkan cara menggunakan pemisah titik koma:
#define function to merge columns with same names together def same_merge (x): return ' ; '. join (x[ x.notnull ()]. astype (str)) #define new DataFrame that merges columns with same names together df_new = df. groupby (level= 0 , axis= 1 ). apply ( lambda x: x.apply (same_merge,axis= 1 )) #view new DataFrame print (df_new) AB 0 5.0 2.0;5.0 1 6.0;12.0 7.0 2 8.0 6.0 3 10.0 15.0 4 4.0 2.0;1.0 5 6.0 4.0 6 4.0 4.0
DataFrame baru menggabungkan kolom dengan nama yang sama dan menggabungkan nilainya dengan titik koma.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:
Cara menghapus kolom duplikat di Pandas
Cara membuat daftar semua nama kolom di Pandas
Cara mengurutkan kolom berdasarkan nama di Pandas