Pandas'ta nasıl düzeltilir: bir serinin doğruluk değeri belirsizdir


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

 ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
            a.any() or a.all().

Bu hata genellikle bir pandanın DataFrame’ini & ve | karakterlerini kullanmak yerine ve ve veya sözcüklerini kullanarak filtrelemeye çalıştığınızda ortaya çıkar. operatörler.

Bu eğitimde bu hatanın pratikte nasıl çözüleceği açıklanmaktadır.

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'],
                   ' 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 takımın “A”ya eşit olduğu ve puanların 20’den az olduğu satırları filtrelemeye çalıştığımızı varsayalım:

 #attempt to filter DataFrame
df[(df[' team '] == ' A ') and (df[' points '] < 20 )]

ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
            a.any() or a.all().

Veya takımın “A”ya eşit olduğu veya puanların 20’den az olduğu satırları filtrelemeye çalıştığımızı varsayalım:

 #attempt to filter DataFrame
df[(df[' team '] == ' A ') or (df[' points '] < 20 )]

ValueError : The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(),
            a.any() or a.all().

Her iki senaryoda da bir serinin doğruluk değerinin belirsiz olduğunu söyleyen bir hata alırız.

Hata nasıl düzeltilir?

Filtreleme yaparken bu hatayı önlemek için & ve | karakterlerini kullandığımızdan emin olmamız gerekir. elementler. operatörler.

Örneğin takımın “A”ya eşit olduğu ve puanların 20’den az olduğu satırları filtrelemek için aşağıdaki kodu kullanabiliriz:

 #filter DataFrame
df[(df[' team '] == ' A ') & (df[' points '] < 20 )]

team points assists rebounds
0 A 18 5 11
2 A 19 7 10
3 A 14 9 6

Veya takımın “A”ya eşit olduğu veya puanların 20’den az olduğu satırları filtrelemek için aşağıdaki kodu kullanabiliriz:

 #filter DataFrame
df[(df[' team '] == ' A ') | (df[' points '] < 20 )]

        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

Her iki senaryoda da & ve | karakterlerini kullandığımız için hata almıyoruz. elementler. operatörler.

Not : Bir pandanın DataFrame’ini birden çok koşula göre filtrelerken her bir koşulun etrafına parantez eklemek önemlidir, aksi halde bir hata alırsınız.

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: “pandalar” modülünde “dataframe” özelliği yok
Pandalar’da nasıl düzeltilir: SettingWithCopyWarning
Pandalarda Nasıl Düzeltilir: TypeError: Çizilecek sayısal veri yok

Yorum ekle

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