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