Nasıl düzeltilir: [float64] tipindeki bir dizi, skaler tipi [bool] ile karşılaştırılamıyor
Pandaları kullanırken karşılaşabileceğiniz bir hata:
TypeError : cannot compare a dtyped [object] array with a scalar of type [bool]
Bu hata genellikle bir DataFrame’i birden çok koşula göre alt kümelemeye çalıştığınızda ve her bir koşulun etrafına parantez koymayı başaramadığınızda ortaya çıkar.
Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.
Hata nasıl yeniden oluşturulur?
Aşağıdaki pandaları DataFrame oluşturduğumuzu varsayalım:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'C', 'G', 'F', 'F', 'C'], ' points ': [21, 30, 26, 29, 14, 29, 22, 16]}) #view DataFrame print (df) team position points 0 AG 21 1 AG 30 2 AF26 3AC 29 4 BG 14 5 BF 29 6 BF 22 7 BC 16
Şimdi, yalnızca takımın “A” ve konumun “G”ye eşit olduğu satırları görüntülemek için .loc işlevini kullanmaya çalıştığımızı varsayalım:
#attempt to only show rows where team='A' and position='G'
df. loc [df. team == ' A ' & df. position == ' G ']
TypeError : cannot compare a dtyped [object] array with a scalar of type [bool]
Bireysel koşulların etrafına parantez koymadığımız için ValueError hatası alıyoruz.
& operatörü == operatörüne göre öncelikli olduğundan pandalar bu ifadeyi doğru sırayla yorumlayamaz.
Hata nasıl düzeltilir?
Bu hatayı düzeltmenin en kolay yolu, aşağıdaki gibi tek tek koşulların etrafına parantez eklemektir:
#only show rows where team='A' and position='G'
df. loc [(df. team == ' A ') & (df. position == ' G ')]
team position points
0 A G 21
1 A G 30
Herhangi bir ValueError almadığımızı ve DataFrame’i başarılı bir şekilde alt kümelemeyi başardığımızı unutmayın.
Ek kaynaklar
Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:
Nasıl düzeltilir? Sütunlar çakışıyor ancak son ek belirtilmemiş
Nasıl düzeltilir: Nesne ve int64 sütunlarını birleştirmeye çalışıyorsunuz
Nasıl düzeltilir: Eşleşmeyen sütunlara sahip bir satır tanımlanamıyor