识别非熊猫datetimeindex?

时间:2016-08-30 13:30:58

标签: python pandas

如何识别和删除以下索引中的非datetimeindex行。

Index([nan, nan, nan, nan, u'aveValue', u'minValue', u'maxValue', u'firstValue', u'lastValue', u'nPointsTot', u'nGood', u'nBlankTimes', u'nBlankValues', u'level_nGood', u'level_nSuspect', u'level_nBad', u'status_nGood', u'2009-01-01 00:00:00', u'2009-01-01 00:05:00', u'2009-01-01 00:10:00', u'2009-01-01 00:15:00', u'2009-01-01 00:20:00', u'2009-01-01 00:25:00', u'2009-01-01 00:30:00', u'2009-01-01 00:35:00', u'2009-01-01 00:40:00', u'2009-01-01 00:45:00', u'2009-01-01 00:50:00', u'2009-01-01 00:55:00', u'2009-01-01 01:00:00', u'2009-01-01 01:05:00', u'2009-01-01 01:10:00', u'2009-01-01 01:15:00', , ...], dtype='object')

我需要删除index不是时间戳的行。 什么是最有效的方法?

#type (df[0].index)
=> class 'pandas.core.index.Index'

1 个答案:

答案 0 :(得分:1)

转换索引to datetime,强制错误并过滤NaT结果:

df[pd.to_datetime(df.index, errors='coerce').to_series().notnull().values]

为了使用notnull方法,我将日期时间索引转换为系列。然后我将该系列转换为可用于索引的布尔矢量。

修改

这适用于任何pandas版本:

df[pd.Series(pd.to_datetime(df.index, errors='coerce')).notnull().values]