2016-08-30 4 views
0

So identifizieren und löschen Sie nicht datetimeindex Zeilen im folgenden Index.nicht pandas datetimeindex identifizieren?

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')

Ich brauche die Zeilen zu entfernen, wobei der Index kein Zeitstempel ist. Was ist der effizienteste Weg, dies zu tun?

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

Hallo! Willkommen bei [SO]! Bitte überprüfen Sie Ihre Formatierung, um Ihre Frage lesbar zu machen! – jkalden

Antwort

1

Konvertieren der Index to datetime, Fehler zu zwingen, und NaT Ergebnisse filtern:

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

Um die notnull Methode zu verwenden, konvertieren ich den Datetime-Index in eine Reihe. Ich konvertiere dann die Reihe in einen booleschen Vektor, der für die Indizierung verwendet werden kann.

bearbeiten

Diese für jede Pandas Version funktionieren sollte:

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

bekam folgende Fehlermeldung, wenn ich diese verwenden: Traceback (jüngste Aufforderung zuletzt): File „“ Linie 1 in Attribute: ‚numpy.ndarray‘ Objekt hat kein Attribut ‚notnull‘ – Ruth

+0

Können Sie 'df versuchen [ pd.notnull (df.index.to_datetime (errors = 'coerce')))] statt dessen? – IanS

+0

TypeError: to_datetime() hat ein unerwartetes Schlüsselwort argument 'errors' – Ruth

Verwandte Themen