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