Salut,
Récemment, les pandas ont introduit le type entier nullable :
https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html
Je m'attendrais à ce que numpy convertisse automatiquement ces tableaux en un type flottant et se remplisse avec np.nan. Cependant, pour une raison quelconque, il le convertit en objet :
pd.DataFrame({'col': [1, np.nan, 3]}).astype('UInt8').values.dtype
ce qui conduit à des erreurs comme celle-ci
np.nanmax(pd.DataFrame({'col': [1, np.nan, 3]}).astype('UInt8').values)
renvoie "TypeError : la valeur booléenne de NA est ambiguë"
Est-ce attendu ?
Est-ce attendu ?
Je dirais oui, car les entiers nullables ne sont pas un type NumPy.
Je suis d'accord, c'est essentiellement par conception et signifie que les choses fonctionnent comme prévu. Il n'est pas impossible que NumPy comprenne cela à un moment donné, mais il est peu probable que cela se produise bientôt.
En utilisant le nouveau UInt8
, vous choisissez en un sens que NaN
n'est pas vraiment la même chose que NA, et les pandas ont maintenant pd.NA
pour rendre cette distinction plus claire.
@ Kreol64 J'ai ouvert pandas-dev/pandas#37460 pour en discuter du côté des pandas