Pandas NaT
se comporte comme une virgule flottante NaN
dans la mesure où il n'est pas égal à lui-même. À la place, vous pouvez utiliser pandas.isnull
:
In [21]: pandas.isnull(pandas.NaT)
Out[21]: True
Cela renvoie également True
pour None et NaN.
Techniquement, vous pourriez également vérifier les Pandas NaT
con x != x
en suivant un modèle commun utilisé pour les NaN en virgule flottante. Cependant, cela risque de poser des problèmes avec les NaT de NumPy, qui sont très similaires et représentent le même concept, mais sont en fait un type différent avec un comportement différent :
In [29]: x = pandas.NaT
In [30]: y = numpy.datetime64('NaT')
In [31]: x != x
Out[31]: True
In [32]: y != y
/home/i850228/.local/lib/python3.6/site-packages/IPython/__main__.py:1: FutureWarning: In the future, NAT != NAT will be True rather than False.
# encoding: utf-8
Out[32]: False
numpy.isnat
la fonction à vérifier pour NumPy NaT
échoue également avec un Pandas NaT
:
In [33]: numpy.isnat(pandas.NaT)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-33-39a66bbf6513> in <module>()
----> 1 numpy.isnat(pandas.NaT)
TypeError: ufunc 'isnat' is only defined for datetime and timedelta.
pandas.isnull
fonctionne à la fois pour les NaT de Pandas et de NumPy, et c'est donc probablement la meilleure solution :
In [34]: pandas.isnull(pandas.NaT)
Out[34]: True
In [35]: pandas.isnull(numpy.datetime64('NaT'))
Out[35]: True
2 votes
pd.isnull
fonctionne également pour les NaT.1 votes
pandas
ynumpy
suivre la norme quiNaN
n'est pas égal à lui-même. donc même si vous avez tapéa == a
vous obtiendriezFalse
4 votes
Voter la réouverture parce que
pandas.NaT
n'est pas réellement un NumPyNaT
et il se comporte différemment en cas d'égalité et denumpy.isnat
des contrôles.0 votes
@ALollz : NumPy ne le fait pas encore ; il y a une
FutureWarning
disant qu'ils en ont l'intention, mais pour l'instant,numpy.datetime64('NaT') == numpy.datetime64('NaT')
.0 votes
Related : Numpy : Vérifier si une valeur est NaT
0 votes
@user2357112 Merci pour l'info ! Bon à savoir.