#python-2.7 #pandas
#python-2.7 #pandas
Вопрос:
Мой фрейм данных pandas структурирован следующим образом:
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
Я пытаюсь установить столбец «дата» в качестве индекса:
df = df.set_index(pd.DatetimeIndex(df['date']))
что приводит к следующей ошибке (с использованием 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
Я консультировался с этим, но я все еще не могу справиться с этой ошибкой. Например,
df = df.set_index(pd.DatetimeIndex(df['date']), ambiguous='infer')
дает:
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
Будем признательны за любые советы о том, как преобразовать столбец datetime в индекс.
Комментарии:
1. не
df.set_index(df['date'], inplace=True)
будет просто работать?2. Да! Это сработало отлично. Спасибо @EdChum.
Ответ №1:
Если у вас dtype
уже есть столбец datetime
for, вы можете просто вызвать set_index
его без необходимости пытаться создать a DatetimeIndex
из столбца:
df.set_index(df['date'], inplace=True)
должно просто работать, dtype для индекса вынюхивается, поэтому здесь нет необходимости создавать индексный объект из серии / столбца.
Комментарии:
1. И в случае, если это еще не datetime,
df.set_index(pd.to_datetime(df['date']), inplace=True)
должно сработать 🙂