Cara memperbaiki: valueerror: tidak dapat menutupi array non-boolean yang berisi nilai na/nan
Kesalahan yang mungkin Anda temui saat menggunakan pandas adalah:
ValueError : Cannot mask with non-boolean array containing NA / NaN values
Kesalahan ini biasanya terjadi ketika Anda mencoba mencari baris di pandas DataFrame yang berisi string tertentu, tetapi kolom yang Anda cari memiliki nilai NaN.
Contoh berikut menunjukkan cara memperbaiki kesalahan ini dalam praktiknya.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita memiliki panda DataFrame berikut:
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
Sekarang misalkan kita mencoba mengakses semua baris di DataFrame di mana kolom posisi berisi string “Penjaga”:
#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
Kami menerima error karena ada nilai NaN di kolom posisi .
Bagaimana cara memperbaiki kesalahan tersebut
Untuk menghindari kesalahan ini, cukup gunakan argumen na=False di fungsi 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
Kali ini kita dapat mengakses semua baris yang berisi “Penjaga” di kolom posisi tanpa kesalahan apa pun.
Cara lain untuk menghindari kesalahan ini adalah dengan menggunakan .fillna(False) sebagai berikut:
#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
Sekali lagi kita dapat mengakses semua baris yang berisi “Penjaga” di kolom posisi tanpa kesalahan apa pun.
Sumber daya tambahan
Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya dengan Python:
Cara Memperbaiki KeyError di Pandas
Cara Memperbaiki: ValueError: Tidak dapat mengubah float NaN menjadi int
Cara Memperbaiki: ValueError: Operan tidak dapat disiarkan dengan bentuk