@ unutbu jawaban tepat, hanya ingin menambahkan peringatan bahwa topeng Anda harus dtype bool, bukan 'objek'. Yaitu masker Anda tidak dapat memiliki pernah punya nan ini. Lihat di sini - bahkan jika topeng Anda bebas nan sekarang, itu akan tetap menjadi tipe 'objek'.
Kebalikan dari seri 'objek' tidak akan menimbulkan kesalahan, sebaliknya Anda akan mendapatkan topeng sampah int yang tidak akan berfungsi seperti yang Anda harapkan.
In[1]: df = pd.DataFrame({'A':[True, False, np.nan], 'B':[True, False, True]})
In[2]: df.dropna(inplace=True)
In[3]: df['A']
Out[3]:
0 True
1 False
Name: A, dtype object
In[4]: ~df['A']
Out[4]:
0 -2
0 -1
Name: A, dtype object
Setelah berbicara dengan rekan tentang hal ini, saya memiliki penjelasan: Sepertinya panda kembali ke operator bitwise:
In [1]: ~True
Out[1]: -2
Seperti kata @geher, Anda dapat mengubahnya menjadi bool dengan astype sebelum Anda kebalikan dengan ~
~df['A'].astype(bool)
0 False
1 True
Name: A, dtype: bool
(~df['A']).astype(bool)
0 True
1 True
Name: A, dtype: bool
object
tipe untuk jawaban di bawah ini berfungsi, jadi gunakan:~ df.astype('bool')