如何测试对象是不是为 pandas 日期时间索引?
Posted
技术标签:
【中文标题】如何测试对象是不是为 pandas 日期时间索引?【英文标题】:How do I test if an object is a pandas datetime index?如何测试对象是否为 pandas 日期时间索引? 【发布时间】:2014-01-28 14:11:35 【问题描述】:如果我在我知道有日期时间索引的DataFrame
上使用type
,我会得到:
In [17]: type(df.index)
Out[17]: pandas.tseries.index.DatetimeIndex
但是当我测试它时,我得到:
In [18]: type(df.index) == 'pandas.tseries.index.DatetimeIndex'
Out[18]: False
我知道我假设 type 的类型是一个字符串,但我真的不知道还能尝试什么,并且搜索没有任何结果。
【问题讨论】:
【参考方案1】:In : type(df.index)
Out: pandas.core.indexes.datetimes.DatetimeIndex
In : type(df.index) == pd.core.indexes.datetimes.DatetimeIndex
Out: True
【讨论】:
感谢您的回答!欢迎使用 ***!【参考方案2】:可以使用 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
【讨论】:
自问这个问题以来,我想我已经走了很长一段路... (-:【参考方案3】:您将 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分失败。我知道的字符串位,但考虑到我尝试针对 pandas.tseries.index.DatetimeIndex 进行测试,我不知道还能尝试什么。对 pd.tseries.index.DatetimeIndex 进行测试,这是我导入它的方式,成功了。 这不会检查日期是否是 DatetimeIndex,只是检查 x[0] 是时间戳...它可以是列表或系列等,第 0 项是时间戳。【参考方案4】:In [102]: type("asd") == str
Out[102]: True
In [103]: type("asd") == "str"
Out[103]: False
比较对象,而不是字符串。
【讨论】:
以上是关于如何测试对象是不是为 pandas 日期时间索引?的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用pd.DatetimeIndex函数将混合格式的日期数据数据转化为时间索引数据DatetimeIndex通过index参数为Series数据指定时间对象索引
如何在不使用 Pandas 的情况下创建等效于 numpy.nan 的日期时间对象?
如何将两列中的日期和时间放入pandas to_datetime并设置为索引[重复]
如何使用另一个日期时间索引获取具有日期时间索引的 Pandas 数据框中的行?
将日期时间格式的索引转换为仅限日期的python pandas
pandas使用to_datetime函数将普通索引(index)转化为日期(时间)索引datetimes.DatetimeIndex