熊猫时间戳记:这是什么类型?

时间:2020-01-08 00:19:18

标签: python-3.x pandas dataframe

我有一个带有解析时间戳的pandas数据框。这是什么类型我尝试通过以下规则将其与之匹配:

dtype_dbg = df[col].dtype # debugger shows it as 'datetime64[ns]'
if isinstance(df[col].dtype,np.datetime64) # no luck
if isinstance(df[col].dtype,pd.Timestamp)  # ditto
if isinstance(df[col].dtype,[all other timestamps I could think of]) # nothing

如何与熊猫数据框中的timestamp dtype匹配?

1 个答案:

答案 0 :(得分:1)

熊猫datetime64[ns]是一种'<M8[ns]'的numpy类型,因此您只需比较dtype s:

df = pd.DataFrame( {'col': ['2019-01-01', '2019-01-02']})
df.col = pd.to_datetime(df.col)
df.info()
#<class 'pandas.core.frame.DataFrame'>
#RangeIndex: 2 entries, 0 to 1
#Data columns (total 1 columns):
#col    2 non-null datetime64[ns]
#dtypes: datetime64[ns](1)
#memory usage: 144.0 bytes

df[col].dtype == np.dtype('<M8[ns]')
#True

您也可以(也许应该更好)使用内置的api.types.is_... functions熊猫:

pd.api.types.is_datetime64_ns_dtype(df[col])
#True

您的比较isinstance(df[col].dtype, ...)不起作用,因为您将 dtype 的类型(当然是numpy.dype)与其他数据dtypes进行比较对于任何数据类型自然会失败。