Одна ошибка, с которой вы можете столкнуться при использовании pandas:
ValueError : Cannot mask with non-boolean array containing NA / NaN values
Эта ошибка обычно возникает, когда вы пытаетесь найти строки в кадре данных pandas, которые содержат определенную строку, но столбец, в котором вы ищете, имеет значения NaN.
В следующем примере показано, как исправить эту ошибку на практике.
Как воспроизвести ошибку
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
import numpy as np
#create DataFrame
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
Теперь предположим, что мы пытаемся получить доступ ко всем строкам в DataFrame, где столбец position содержит строку «Guard»:
#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
Мы получаем ошибку, потому что в столбце position есть значение NaN.
Как исправить ошибку
Чтобы избежать этой ошибки, нам просто нужно использовать аргумент na=False в функции 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
На этот раз мы можем без ошибок получить доступ ко всем строкам, содержащим «Страж» в столбце « Позиция ».
Другой способ избежать этой ошибки — использовать .fillna(False) следующим образом:
#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
Мы снова можем без ошибок получить доступ ко всем строкам, содержащим «Страж» в столбце « Позиция ».
Дополнительные ресурсы
В следующих руководствах объясняется, как исправить другие распространенные ошибки в Python:
Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами