如何检查日期时间数据是否在数据帧的索引中

时间:2016-07-21 07:01:07

标签: python pandas

我的数据框df_hq显示如下

enter image description here

df_hq.index.values
Out[26]: 
array([('000001.SZ', Timestamp('2009-01-05 00:00:00')),
       ('000001.SZ', Timestamp('2009-01-06 00:00:00')),
       ('000001.SZ', Timestamp('2009-01-07 00:00:00')), ...,
       ('603999.SH', Timestamp('2016-03-30 00:00:00')),
       ('603999.SH', Timestamp('2016-03-31 00:00:00')),
       ('603999.SH', Timestamp('2016-04-01 00:00:00'))], dtype=object)

我想知道在使用date.i访问数据之前索引中的日期是否尝试以下方法。其中没有一个工作。

'000001.SZ' in df_hq.index
Out[27]: True

'2009-01-05 00:00:00' in df_hq.index
Out[28]: False

pandas.Timestamp('2009-01-05 00:00:00') in df_hq.index
Out[29]: False

datetime.date(2009,1,5) in df_hq.index
Out[30]: False

日期2009-01-05实际上是在索引中,但是,上面的答案是错误的 如何检查索引中是否有日期?

1 个答案:

答案 0 :(得分:2)

如果这是带有元组的索引,则只能轻松搜索特定元组。

('000001.SZ', Timestamp('2009-01-05 00:00:00')) in df_hq.index

我会将其更改为MultiIndex以获得更好的功能。

df_hq.index = pd.MultiIndex.from_tuples(df_hq.index.values)

然后你可以看到Timestamp('2009-01-05 00:00:00')是否在索引中,而不管元组的第一部分是什么:

Timestamp('2009-01-05 00:00:00') in df_hq.index.levels[1]