如何测试对象是否为pandas datetime索引?

时间:2014-01-09 20:11:45

标签: python datetime indexing pandas

如果我在type上使用DataFrame,我知道它有一个日期时间索引,我得到:

In [17]: type(df.index)
Out[17]: pandas.tseries.index.DatetimeIndex

但是当我测试它时,我得到:

In [18]: type(df.index) == 'pandas.tseries.index.DatetimeIndex'
Out[18]: False

我知道我认为类型的类型是一个字符串,但我真的不知道还有什么可以尝试,而搜索却没有产生任何结果。

4 个答案:

答案 0 :(得分:17)

您可以使用DatetimeIndex类的isinstance

In [11]: dates = pd.date_range('20130101', periods=6)

In [12]: dates
Out[12]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-01 00:00:00, ..., 2013-01-06 00:00:00]
Length: 6, Freq: D, Timezone: None

In [13]: isinstance(dates, pd.DatetimeIndex)
Out[13]: True

答案 1 :(得分:5)

你把Pandas导入了什么?

如果您按照文档中的指南操作并执行以下操作:

import pandas as pd
dates = pd.date_range('20130101', periods=6)

type(dates[0]) 
pandas.tslib.TimestampTimestamp('2013-01-01 00:00:00', tz=None)

type(dates[0]) == pandas.tslib.Timestamp
False  
# this throws NameError since you didn't import as pandas

type(dates[0]) == pd.tslib.Timestamp
True  
# this works because we imported Pandas as pd

出于习惯,我忽略了提及,因为@ M4rtini突出显示你不应该使用字符串来比较等效性。

答案 2 :(得分:3)

In [102]: type("asd") == str
Out[102]: True

In [103]: type("asd") == "str"
Out[103]: False

与对象比较,而不是字符串。

答案 3 :(得分:1)

In : type(df.index)  
Out: pandas.core.indexes.datetimes.DatetimeIndex


In : type(df.index) == pd.core.indexes.datetimes.DatetimeIndex  
Out: True