2016-10-16 4 views
1

My pandas Datenrahmen wie folgt strukturiert:Converting Datumzeit zu pandas Index

 date      tag 
0  2015-07-30 19:19:35-04:00 E7RG6 
1  2016-01-27 08:20:01-05:00 ER57G 
2  2015-11-15 23:32:16-05:00 EQW7G 
3  2016-07-12 00:01:11-04:00 ERV7G 
4  2016-02-14 00:35:21-05:00 EQW7G 
5  2016-03-01 00:08:59-05:00 EQW7G 
6  2015-06-19 07:15:06-04:00 ER57G 
7  2016-09-08 18:17:53-04:00 ER5TT 
8  2016-09-03 01:53:45-04:00 EQW7G 
9  2015-11-30 09:31:02-05:00 ER57G 
10 2016-03-03 22:28:26-05:00 ES5TG 
11 2016-02-11 10:39:24-05:00 E5P7G 
12 2015-03-16 07:18:47-04:00 ER57G 
... 

[11015 rows x 2 columns] 
date datetime64[ns, America/New_York] 
tag        object 
dtype: object 

Ich versuche der Spalte ‚Datum‘ als Index zu setzen:

df = df.set_index(pd.DatetimeIndex(df['date'])) 

die die folgenden Fehler ergibt (unter Verwendung von Pandas 0,19)

File "pandas/tslib.pyx", line 3753, in pandas.tslib.tz_localize_to_utc (pandas/tslib.c:64516) 
pytz.exceptions.AmbiguousTimeError: Cannot infer dst time from Timestamp('2015-11-01 01:38:12'), try using the 'ambiguous' argument 

ich habe this konsultiert, aber ich bin noch nicht durch diesen Fehler zu arbeiten. Zum Beispiel

df = df.set_index(pd.DatetimeIndex(df['date']), ambiguous='infer') 

ergibt:

File "pandas/tslib.pyx", line 3703, in pandas.tslib.tz_localize_to_utc (pandas/tslib.c:63553) 
pytz.exceptions.AmbiguousTimeError: Cannot infer dst time from 2015-11-01 01:38:12 asthere are no repeated times 

Alle Ratschläge, wie die Datetime-Spalte in den Index konvertieren würde sehr geschätzt.

+1

wird nicht 'df.set_index (df ['date'], inplace = True)' einfach funktionieren? – EdChum

+0

Ja! Das hat perfekt funktioniert. Danke @EdChum. – Kappa

Antwort

1

Wenn Ihr dtype für eine Spalte bereits datetime dann können Sie nur set_index nennen, ohne die Notwendigkeit zu versuchen, eine DatetimeIndex aus der Säule zu konstruieren:

df.set_index(df['date'], inplace=True) 

sollte nur Arbeit, die dtype für den Index wird schnupperte aus, so dass hier kein Indexobjekt aus der Serie/Spalte erstellt werden muss.

+1

Und falls es noch kein Datetime ist, 'df.set_index (pd.to_datetime (df ['date']), inplace = True)' sollte es tun :) – aiguofer

Verwandte Themen