programing

변수가 PD인지 테스트하는 방법.NaT?

bestprogram 2023. 7. 26. 22:13

변수가 PD인지 테스트하는 방법.NaT?

제 변수 중 하나가 PD인지 테스트하려고 합니다.NaT. 나는 그것이 NaT라는 것을 알고 있지만, 여전히 그것은 시험을 통과하지 못할 것입니다.예를 들어, 다음 코드는 아무것도 인쇄하지 않습니다.

a=pd.NaT

if a == pd.NaT:
    print("a not NaT")

누구 단서라도 있나요?효과적으로 테스트할 수 있는 방법이 있습니까?aNaT인가요?

판다NaT부동 소수점처럼 행동합니다.NaN자신과 동등하지 않다는 점에서.대신 다음을 사용할 수 있습니다.pandas.isnull:

In [21]: pandas.isnull(pandas.NaT)
Out[21]: True

이 또한 반환됩니다.TrueNone 및 NaN을 위한.

기술적으로, 당신은 또한 판다를 확인할 수 있습니다.NaT와 함께x != x부동 소수점 NaN에 사용되는 일반적인 패턴을 따릅니다.그러나 이는 매우 유사하고 동일한 개념을 나타내지만 실제로는 동작이 다른 다른 유형인 NumPy NaT에 문제를 일으킬 수 있습니다.

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.isnatNumPy 확인 기능NaT또한 판다와 함께 실패합니다.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.isnullPandas와 NumPy NaTs 모두에서 작동하므로, 아마도 다음과 같은 방법일 것입니다.

In [34]: pandas.isnull(pandas.NaT)
Out[34]: True

In [35]: pandas.isnull(numpy.datetime64('NaT'))
Out[35]: True
pd.NaT is pd.NaT

진실의

이것은 나에게 효과가 있습니다.

팬더를 위해 판다.isna()를 사용할 수도 있습니다.NaT, numpy.nan 또는 없음:

import pandas as pd
import numpy as np

x = (pd.NaT, np.nan, None)
[pd.isna(i) for i in x]

Output:
[True, True, True]

만약 그것이 나중이라면.Series(예:DataFrame열) 또한 사용할 수 있습니다..isna():

pd.Series(pd.NaT).isna()
# 0    True
# dtype: bool

이것이 나에게 효과가 있는 것입니다.

>>> a = pandas.NaT
>>> type(a) == pandas._libs.tslibs.nattype.NaTType
>>> True

언급URL : https://stackoverflow.com/questions/49435317/how-to-test-if-a-variable-is-pd-nat