Nasıl düzeltilir? valueerror: na/nan değerleri içeren boole olmayan diziyle maskelenemiyor
Pandaları kullanırken karşılaşabileceğiniz bir hata:
ValueError : Cannot mask with non-boolean array containing NA / NaN values
Bu hata genellikle pandas DataFrame’de belirli bir dize içeren satırları bulmaya çalıştığınızda ortaya çıkar, ancak aradığınız sütunda NaN değerleri 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
import numpy as np
#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B'],
' position ': ['Guard', 'Guard', np. nan , 'Guard', 'Forward'],
' points ': [22, 28, 14, 13, 19]})
#view DataFrame
print (df)
team position points
0 A Guard 22
1 A Guard 28
2 A NaN 14
3 B Guard 13
4 B Forward 19
Şimdi DataFrame’deki konum sütununun “Guard” dizesini içerdiği tüm satırlara erişmeye çalıştığımızı varsayalım:
#access all rows where position column contains 'Guard'
df[df[' position ']. str . contains (' Guard ')]
ValueError : Cannot mask with non-boolean array containing NA / NaN values
Pozisyon sütununda NaN değeri olduğu için hata alıyoruz.
Hata nasıl düzeltilir?
Bu hatayı önlemek için str.contains() işlevinde na=False bağımsız değişkenini kullanmanız yeterlidir:
#access all rows where position column contains 'Guard', ignore NaN
df[df[' position ']. str . contains (' Guard ', na= False )]
team position points
0 A Guard 22
1 A Guard 28
3 B Guard 13
Bu sefer pozisyon sütununda “Guard” yazan tüm satırlara hatasız olarak ulaşabiliyoruz.
Bu hatayı önlemenin başka bir yolu da .fillna(False) işlevini aşağıdaki gibi kullanmaktır:
#access all rows where position column contains 'Guard', ignore NaN
df[df[' position ']. str . contains (' Guard '). fillna ( False )]
team position points
0 A Guard 22
1 A Guard 28
3 B Guard 13
Bir kez daha konum sütununda “Guard” içeren tüm satırlara hatasız olarak erişebiliyoruz.
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ı