Nasıl onarılır: valueerror: dizin yinelenen girişler içeriyor, yeniden şekillendirilemez
Pandaları kullanırken karşılaşabileceğiniz bir hata:
ValueError : Index contains duplicate entries, cannot reshape
Bu hata genellikle pivot() işlevini kullanarak bir pandas DataFrame’i yeniden şekillendirmeye çalıştığınızda ortaya çıkar, ancak ortaya çıkan DataFrame’de aynı dizin değerlerini paylaşan birden fazla değer vardır.
Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.
Hata nasıl yeniden oluşturulur?
Aşağıdaki pandalara sahip olduğumuzu varsayalım DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [5, 7, 7, 9, 4, 9, 9, 12]}) #view DataFrame df team position points 0 A G 5 1 A G 7 2 A F 7 3 A F 9 4 B G 4 5 B G 9 6 B F 9 7 B F 12
Şimdi, takımı satırlar ve konumu sütunlar olarak kullanarak DataFrame’i döndürmeye çalıştığımızı varsayalım:
#attempt to reshape DataFrame
df. pivot (index=' team ', columns=' position ', values=' points ')
ValueError : Index contains duplicate entries, cannot reshape
DataFrame’deki birden fazla satırın takım ve pozisyon için aynı değerleri paylaşması nedeniyle hata alıyoruz.
Yani DataFrame’i yeniden şekillendirmeye çalıştığımızda pandalar, ortaya çıkan DataFrame’in her hücresinde hangi nokta değerinin görüntüleneceğini bilmiyor.
Hata nasıl düzeltilir?
Bu hatayı düzeltmek için veri değerlerini belirli bir şekilde toplamak amacıyla pivot_table() fonksiyonunu belirli bir aggfunc argümanıyla kullanabiliriz.
Örneğin, takımı satır olarak, konumu sütun olarak ve DataFrame hücrelerindeki nokta değerlerinin toplamını kullanan yeni bir DataFrame oluşturmak için pivot_table() işlevini kullanabiliriz:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' sum ')
position F G
team
At 16 12
B 21 13
Bu sefer hata almadığımızı unutmayın.
DataFrame’deki değerler her takım ve pozisyon kombinasyonu için puanların toplamını gösterir.
aggfunc için ortalama gibi farklı bir değer de kullanabileceğimizi unutmayın:
df. pivot_table (index=' team ', columns=' position ', values=' points ', aggfunc=' mean ')
position F G
team
At 8.0 6.0
B 10.5 6.5
Pivot_table() işlevinde aggfunc argümanını kullanarak herhangi bir hatayı önleyebiliriz.
Not: Pivot_table() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:
Pandas’ta KeyError Nasıl Düzeltilir
Nasıl düzeltilir? ValueError: float NaN int’ye dönüştürülemiyor
Nasıl düzeltilir? ValueError: İşlenenler şekillerle yayınlanamadı