Oplossing: valueerror: kan niet maskeren met een niet-booleaanse array die na/nan-waarden bevat
Een fout die u kunt tegenkomen bij het gebruik van panda’s is:
ValueError : Cannot mask with non-boolean array containing NA / NaN values
Deze fout treedt meestal op wanneer u rijen in een Panda DataFrame probeert te vinden die een bepaalde tekenreeks bevatten, maar de kolom die u zoekt bevat NaN-waarden.
Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.
Hoe de fout te reproduceren
Stel dat we de volgende panda’s DataFrame hebben:
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
Stel nu dat we proberen toegang te krijgen tot alle rijen in het DataFrame waar de positiekolom de string “Guard” bevat:
#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
We ontvangen een foutmelding omdat er een NaN-waarde in de positiekolom staat.
Hoe u de fout kunt oplossen
Om deze fout te voorkomen, gebruikt u eenvoudig het argument na=False in de functie str.contains() :
#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
Deze keer hebben we zonder fouten toegang tot alle rijen met „Bewaker“ in de positiekolom .
Een andere manier om deze fout te voorkomen is door .fillna(False) als volgt te gebruiken:
#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
Opnieuw hebben we zonder fouten toegang tot alle rijen met „Bewaker“ in de positiekolom .
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:
Hoe KeyError in Panda’s te repareren
Oplossing: ValueError: Kan float NaN niet naar int converteren
Oplossing: ValueError: Operanden konden niet worden uitgezonden met vormen