Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从pandas更改为pandas.NaT时,pandas会出现问题。_libs.tslib.NaTType_Python_Python 3.x_Pandas - Fatal编程技术网

Python 从pandas更改为pandas.NaT时,pandas会出现问题。_libs.tslib.NaTType

Python 从pandas更改为pandas.NaT时,pandas会出现问题。_libs.tslib.NaTType,python,python-3.x,pandas,Python,Python 3.x,Pandas,由于pandas 0.23.4,pandas.\u libs.tslib.NaTType已被完全弃用,因此我必须使用pandas.NaT,如0.23.2changelog所示 The type import pandas.tslib.NaTType is deprecated and can be replaced by using type(pandas.NaT) 但当我尝试以下代码时 from pandas import NaT val_type = type(val) if issub

由于
pandas 0.23.4
pandas.\u libs.tslib.NaTType
已被完全弃用,因此我必须使用
pandas.NaT
,如
0.23.2
changelog所示

The type import pandas.tslib.NaTType is deprecated and can be replaced by using type(pandas.NaT)
但当我尝试以下代码时

from pandas import NaT
val_type = type(val)

if issubclass(val_type, NaT):
   return 'NaT'
我犯了个错误

TypeError: issubclass() arg 2 must be a class or tuple of classes
如果我尝试

if isinstance(val_type, NaT):
   return 'NaT'
我犯了以下错误

TypeError: isinstance() arg 2 must be a type or tuple of types

正如弃用消息所建议的,您应该使用
type(pandas.NaT)
,而不是直接使用
NaT
。因此,如果您导入了名称,您可以执行issubclass(val_type,type(pandas.NaT))

正如弃用消息所建议的,您应该使用
类型(pandas.NaT)
,而不是直接使用
NaT
。因此,如果您导入了名称,您可以执行IsubClass(val_type,type(pandas.NaT))

您需要为isinstance()指定实际要查找的类型。在本例中,我将执行
类型(df.loc[knownnatdata)
并将其用作方法的输入。例如,我用
pd.NaT

df = pd.DataFrame([[1,1],[3,4],[3,4]], columns=["a", 'b'])
df['c'],df['d']=np.nan, pd.NaT

    a   b   c   d
0   1   1   NaN NaT
1   3   4   NaN NaT
2   3   4   NaN NaT
然后
type(df['d'].iloc[0])
给了我
pandas.\u libs.tslibs.nattype.nattype
(这仍然是我版本中的类型,但请注意,它仍然不仅仅是
NaT

与之相比

isinstance(df['d'].iloc[0],pd._libs.tslibs.nattype.NaTType)
True

您需要给
isinstance()
您正在查找的实际类型。在这种情况下,我将执行
type(df.loc[knownnatdata)
并将其用作方法的输入。例如,我用
pd.NaT

df = pd.DataFrame([[1,1],[3,4],[3,4]], columns=["a", 'b'])
df['c'],df['d']=np.nan, pd.NaT

    a   b   c   d
0   1   1   NaN NaT
1   3   4   NaN NaT
2   3   4   NaN NaT
然后
type(df['d'].iloc[0])
给了我
pandas.\u libs.tslibs.nattype.nattype
(这仍然是我版本中的类型,但请注意,它仍然不仅仅是
NaT

与之相比

isinstance(df['d'].iloc[0],pd._libs.tslibs.nattype.NaTType)
True

要详细说明其他答案:

pandas.\u libs.tslibs.nattype.nattype
是一个已定义的类

pandas.NaT
(引入顶级命名空间)是上述类的一个实例,定义如下:

理由是

这是一个伪本机sentinel值,可由NumPy以单数数据类型(datetime64[ns])表示


issubclass()
要求您传递一个实际的类,而不是类实例,使用
type(pd.NaT)
可以在不直接访问任何“非公开”API的情况下为您传递该类。

详细说明其他答案:

pandas.\u libs.tslibs.nattype.nattype
是一个已定义的类

pandas.NaT
(引入顶级命名空间)是上述类的一个实例,定义如下:

理由是

这是一个伪本机sentinel值,可由NumPy以单数数据类型(datetime64[ns])表示


issubclass()
要求您传递一个实际的类,而不是类实例,使用
type(pd.NaT)
将为您传递该类,而无需直接访问任何“非公共”API。

这比mine@BradSolomon-请检查。您可以看到如何使用它,因此您必须输入类型,而不是它们的实例。这比mine@BradSolomon-请检查。您可以看到如何使用它,因此您必须输入类型,而不是它们的实例。