Pd.to_datetime возвращает объект, а не временной ряд - PullRequest
2 голосов
/ 10 октября 2019

Я пытаюсь преобразовать свой столбец в df во временной ряд. Набор данных поступает с 23 марта 2015 года по 17 августа 2019 года, и набор данных выглядит следующим образом:

                        time    1day_active_users
0  2015-03-23 00:00:00-04:00              19687.0
1  2015-03-24 00:00:00-04:00              19437.0

Я пытаюсь преобразовать столбец времени в ряд дата-время, но он возвращает столбец как объект. Вот код:

data = pd.read_csv(data_path)
data.set_index('time', inplace=True)
data.index= pd.to_datetime(data.index)
data.index.dtype 

data.index.dtype возвращает dtype ('O'). Я предполагаю, что именно поэтому, когда я пытаюсь проиндексировать элемент во времени, он возвращает ошибку. Например, когда я запускаю это:

data.loc['2015']

Это дает мне эту ошибку

KeyError: '2015'

Любая помощь или отзывы будут оценены. Спасибо.

1 Ответ

1 голос
/ 10 октября 2019

Как прокомментировано, проблема может быть из-за различных часовых поясов. Попробуйте передать utc=True в pd.to_datetime:

df['time'] = pd.to_datetime(df['time'],utc=True)
df['time']

Тестовые данные

                        time  1day_active_users
0  2015-03-23 00:00:00-04:00            19687.0
1  2015-03-24 00:00:00-05:00            19437.0

Вывод:

0   2015-03-23 04:00:00+00:00
1   2015-03-24 05:00:00+00:00
Name: time, dtype: datetime64[ns, UTC]

А затем:

df.set_index('time', inplace=True)
df.loc['2015']

дает

                           1day_active_users
time                                        
2015-03-23 04:00:00+00:00            19687.0
2015-03-24 05:00:00+00:00            19437.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...