Jak naprawić: błąd wartości: nie można zamaskować tablicą inną niż logiczna zawierającą wartości na/nan


Błąd, który możesz napotkać podczas korzystania z pand, to:

 ValueError : Cannot mask with non-boolean array containing NA / NaN values

Ten błąd zwykle występuje, gdy próbujesz znaleźć wiersze w ramce danych pandy zawierające określony ciąg, ale przeszukiwana kolumna ma wartości NaN.

Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.

Jak odtworzyć błąd

Załóżmy, że mamy następującą ramkę DataFrame pand:

 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

Załóżmy teraz, że próbujemy uzyskać dostęp do wszystkich wierszy w ramce danych, gdzie kolumna pozycji zawiera ciąg „Strażnik”:

 #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

Otrzymujemy błąd, ponieważ w kolumnie pozycji znajduje się wartość NaN.

Jak naprawić błąd

Aby uniknąć tego błędu, po prostu użyj argumentu na=False w funkcji 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

Tym razem możemy uzyskać dostęp do wszystkich wierszy zawierających „Straż” w kolumnie pozycji bez żadnych błędów.

Innym sposobem uniknięcia tego błędu jest użycie .fillna(False) w następujący sposób:

 #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

Po raz kolejny możemy uzyskać dostęp do wszystkich wierszy zawierających „Straż” w kolumnie pozycji bez żadnych błędów.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:

Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *