如何识别和删除以下索引中的非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'
答案 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]