Oi,
Recentemente, os pandas introduziram dtipo inteiro anulável:
https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html
Eu esperaria que o numpy convertesse automaticamente essas matrizes em um tipo float e as preenchesse com np.nan. No entanto, por algum motivo, ele o converte em objeto:
pd.DataFrame({'col': [1, np.nan, 3]}).astype('UInt8').values.dtype
o que leva a erros como este
np.nanmax(pd.DataFrame({'col': [1, np.nan, 3]}).astype('UInt8').values)
retorna "TypeError: o valor booleano de NA é ambíguo"
Isso é esperado?
Isso é esperado?
Eu diria que sim, pois inteiros anuláveis não são do tipo NumPy.
Eu concordo, isso ocorre basicamente por design e significa que as coisas estão funcionando conforme o esperado. Não é impossível que o NumPy possa entender isso em algum ponto, mas é improvável que aconteça em breve.
Ao usar o novo UInt8
, você está, em certo sentido, escolhendo que NaN
realmente não é o mesmo que NA, e os pandas têm pd.NA
agora para tornar esta distinção mais clara.
@ Kreol64 Abri pandas-dev / pandas # 37460 para discutir isso no lado dos pandas