Hai,
Baru-baru ini panda memperkenalkan dtype integer yang dapat dibatalkan:
https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html
Saya berharap numpy untuk secara otomatis mengubah array seperti itu menjadi tipe float dan mengisi dengan np.nan. Namun, untuk beberapa alasan itu mengubahnya menjadi objek:
pd.DataFrame({'col': [1, np.nan, 3]}).astype('UInt8').values.dtype
yang mengarah ke kesalahan seperti ini
np.nanmax(pd.DataFrame({'col': [1, np.nan, 3]}).astype('UInt8').values)
mengembalikan "TypeError: nilai boolean NA ambigu"
Apakah itu yang diharapkan?
Apakah itu yang diharapkan?
Saya akan mengatakan ya, karena bilangan bulat yang dapat dibatalkan bukan tipe NumPy.
Saya setuju, ini pada dasarnya berdasarkan desain dan berarti semuanya berfungsi seperti yang diharapkan. Bukan tidak mungkin NumPy mungkin memahami hal ini di beberapa titik, tetapi itu tidak mungkin terjadi segera.
Dengan menggunakan UInt8
, Anda dapat memilih bahwa NaN
benar-benar tidak sama dengan NA, dan panda memiliki pd.NA
sekarang untuk membuat perbedaan ini lebih jelas.
@Kreol64 Saya membuka pandas-dev/pandas#37460 untuk membahas ini di sisi panda