Nasıl düzeltilir: "rand_", [int64] türünde bir dizi ve [bool] türünde bir skalerle çalıştırılamıyor


Python’da karşılaşabileceğiniz bir hata:

 TypeError :Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]

Bu hata genellikle bir pandanın DataFrame’ini birden fazla koşul kullanarak filtrelemeye çalıştığınızda ancak her bir koşulun etrafında parantez kullanamadığı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 pandalara sahip olduğumuzu varsayalım DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [18, 22, 19, 14, 14, 11, 20, 28],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print (df)

  team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
4 B 14 12 6
5 B 11 9 5
6 B 20 9 9
7 B 28 4 12

Şimdi DataFrame’i yalnızca takım sütununun “A”ya eşit olduğu ve puan sütununun 15’ten büyük olduğu satırları gösterecek şekilde filtrelemeye çalıştığımızı varsayalım:

 #attempt to filter DataFrame
df. loc [df. team == ' A ' & df. points > 15 ]

TypeError :Cannot perform 'rand_' with a dtyped [int64] array and scalar of type [bool]

Her bir koşulun başına parantez koymadığımız için bir hata alıyoruz.

Hata nasıl düzeltilir?

Bu hatayı düzeltmek için, filtreyi çalıştırırken her bir koşulun etrafına parantez koyduğumuzdan emin olmamız yeterlidir:

 #filter DataFrame
df. loc [(df. team == ' A ') & (df. points > 15 )]

	team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10

DataFrame’i yalnızca Takımın ‘A’ya eşit olduğu ve Puanların 15’ten büyük olduğu satırları gösterecek şekilde başarıyla filtreleyebildiğimizi unutmayın.

Ayrıca, veya “| » bunun yerine operatör:

 #filter rows where team is equal to 'A' or points is greater than 15
df. loc [( df.team == ' A ') | (df. points > 15 )]

team points assists rebounds
0 A 18 5 11
1 to 22 7 8
2 A 19 7 10
3 A 14 9 6
6 B 20 9 9
7 B 28 4 12

Bir kez daha herhangi bir hatadan kaçındığımızı unutmayın.

Ek kaynaklar

Aşağıdaki eğitimlerde pandalardaki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:

Nasıl düzeltilir: “pandalar” modülünde “dataframe” özelliği yok
Nasıl düzeltilir? TypeError: Çizilecek sayısal veri yok
Pandas’ta KeyError Nasıl Düzeltilir

Yorum ekle

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