Cara memperbaiki: kolom tumpang tindih tetapi tidak ada akhiran yang ditentukan


Kesalahan yang mungkin Anda temui saat menggunakan pandas adalah:

 ValueError : columns overlap but no suffix specified: Index(['column'], dtype='object')

Kesalahan ini terjadi saat Anda mencoba menggabungkan dua bingkai data yang memiliki setidaknya satu nama kolom yang sama dan tidak ada akhiran yang disediakan untuk bingkai data kiri atau kanan untuk membedakan kolom dalam bingkai data baru.

Ada dua cara untuk memperbaiki kesalahan ini:

Solusi 1: Berikan nama akhiran.

 df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')

Solusi 2: Gunakan fungsi penggabungan sebagai gantinya.

 df1. merge (df2, how = ' left ')

Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.

Bagaimana cara mereproduksi kesalahan tersebut

Misalkan kita mencoba menggabungkan dua bingkai data berikut:

 import pandas as pd

#create first data frame
df1 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'],
                    ' points ': [5, 7, 7, 9, 12, 9],
                    ' assists ': [11, 8, 10, 6, 6, 5]})

#create second data frame
df2 = pd. DataFrame ({' player ': ['A', 'B', 'C', 'D', 'E', 'F'],
                    ' rebounds ': [4, 4, 6, 9, 13, 16],
                    ' steals ': [2, 2, 1, 4, 3, 2]})

#attempt to perform left join on data frames
df1. join (df2, how = ' left ')

ValueError : columns overlap but no suffix specified: Index(['player'], dtype='object')

Kami menerima kesalahan karena kedua bingkai data sama-sama berbagi kolom “pemain”, tetapi tidak ada akhiran yang disediakan untuk bingkai data kiri atau kanan untuk membedakan kolom bingkai data baru.

Bagaimana cara memperbaiki kesalahan tersebut

Salah satu cara untuk memperbaiki kesalahan ini adalah dengan memberikan nama akhiran untuk bingkai data kiri atau kanan:

 #perform left join on data frames with suffix provided
df1. join (df2, how = ' left ', lsuffix=' left ', rsuffix=' right ')

        playerleft points assists playerright rebounds steals
0 A 5 11 A 4 2
1 B 7 8 B 4 2
2 C 7 10 C 6 1
3 D 9 6 D 9 4
4 E 12 6 E 13 3
5 F 9 5 F 16 2

Cara lain untuk memperbaiki kesalahan ini adalah dengan menggunakan fungsi merge() , yang tidak mengalami masalah ini saat menggabungkan dua bingkai data:

 #merge two data frames
df1. merge (df2, how = ' left ')

	player points assists rebounds steals
0 A 5 11 4 2
1 B 7 8 4 2
2 C 7 10 6 1
3 D 9 6 9 4
4 E 12 6 13 3
5 F 9 5 16 2

Perhatikan bahwa fungsi merge() hanya menghapus semua nama dari bingkai data kedua yang sudah termasuk dalam bingkai data pertama.

Sumber daya tambahan

Cara menggabungkan dua Pandas DataFrames di index
Cara menggabungkan Pandas DataFrames di beberapa kolom
Bagaimana cara menambahkan array Numpy ke Pandas DataFrame

Tambahkan komentar

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