我有一个带有解析时间戳的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匹配?
答案 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进行比较对于任何数据类型自然会失败。