Nasıl düzeltilir? sütunlar çakışıyor ancak son ek belirtilmemiş


Pandaları kullanırken karşılaşabileceğiniz bir hata:

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

Bu hata, en az bir ortak sütun adını paylaşan iki veri çerçevesini birleştirmeye çalıştığınızda ve yeni veri çerçevesindeki sütunları ayırt etmek için sol veya sağ veri çerçevesine herhangi bir son ek sağlanmadığında ortaya çıkar.

Bu hatayı düzeltmenin iki yolu vardır:

1. Çözüm: Sonek adlarını sağlayın.

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

Çözüm 2: Bunun yerine birleştirme işlevini kullanın.

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

Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.

Hata nasıl yeniden oluşturulur?

Aşağıdaki iki veri çerçevesini bir araya getirmeye çalıştığımızı varsayalım:

 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')

İki veri çerçevesinin her ikisi de “oyuncu” sütununu paylaştığından ancak sol veya sağ veri çerçevesine yeni veri çerçevesinin sütunlarını ayırt edecek bir son ek sağlanmadığından hata alıyoruz.

Hata nasıl düzeltilir?

Bu hatayı düzeltmenin bir yolu, sol veya sağ veri çerçevesi için bir sonek adı sağlamaktır:

 #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

Bu hatayı düzeltmenin başka bir yolu da, iki veri çerçevesini birleştirirken bu sorunla karşılaşmayan merge() işlevini kullanmaktır:

 #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

merge() fonksiyonunun, halihazırda birinci veri çerçevesine ait olan ikinci veri çerçevesinden tüm adları kaldırdığını unutmayın.

Ek kaynaklar

Dizinde iki Pandas DataFrame nasıl birleştirilir
Pandas DataFrames’ı birden çok sütunda birleştirme
Pandas DataFrame’e Numpy dizisi nasıl eklenir

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir