Как преобразовать часовой пояс столбца даты и времени в Панд? - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть столбец (неиндексный столбец), в котором есть datetime.Например, первые пять записей выглядят примерно так:

[Timestamp('2018-11-15 19:57:55'),
 Timestamp('2018-11-15 19:59:46'),
 Timestamp('2018-11-15 20:00:59'),
 Timestamp('2018-11-15 20:01:41'),
 Timestamp('2018-11-15 20:01:54')]

Я хочу преобразовать записи из UTC в тихоокеанский часовой пояс.Предполагая, что столбец называется times В настоящее время я делаю следующее:

times.dt.tz_localize('GMT').dt.tz_convert('America/Los_Angeles')

Хотя это успешно преобразует столбец из UTC в PST, в выводе есть посторонние компоненты, которые я не делаюхочу.Это выглядит следующим образом:

[Timestamp('2018-11-15 11:57:55-0800', tz='America/Los_Angeles'),
 Timestamp('2018-11-15 11:59:46-0800', tz='America/Los_Angeles'),
 Timestamp('2018-11-15 12:00:59-0800', tz='America/Los_Angeles'),
 Timestamp('2018-11-15 12:01:41-0800', tz='America/Los_Angeles'),
 Timestamp('2018-11-15 12:01:54-0800', tz='America/Los_Angeles')]

Как удалить или игнорировать -0800 из отметок времени?Спасибо!

1 Ответ

0 голосов
/ 12 декабря 2018

Просто добавьте последний шаг .tz_localize(None):

import pandas as pd
d = pd.Series(['2018-11-15 19:57:55', '2018-11-15 19:59:46'])
d = pd.to_datetime(d)
d
0   2018-11-15 19:57:55
1   2018-11-15 19:59:46
dtype: datetime64[ns]

d_pacific_tz_aware = d.dt.tz_localize("GMT").dt.tz_convert('America/Los_Angeles')
d_pacific_tz_aware
0   2018-11-15 11:57:55-08:00
1   2018-11-15 11:59:46-08:00
dtype: datetime64[ns, America/Los_Angeles]


d_pacific_tz_naive = d.dt.tz_localize("GMT").dt.tz_convert('America/Los_Angeles').dt.tz_localize(None)
d_pacific_tz_naive
0   2018-11-15 11:57:55
1   2018-11-15 11:59:46
dtype: datetime64[ns]
...