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

Tambahkan komentar

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