How to convert time zones of datetime column in Pandas?
13,289
Just add a last step of .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]
Author by
Jane Sully
Updated on June 18, 2022Comments
-
Jane Sully almost 2 years
I have a column (non-index column) that has datetimes inside it. For example, the first five entries look something like this:
[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')]
I want to convert the entries from UTC to the Pacific timezone. Assuming the column is called
times
I am currently doing the following:times.dt.tz_localize('GMT').dt.tz_convert('America/Los_Angeles')
While this successfully converts the column from UTC to PST, the output has extraneous components that I do not want. It looks like the following:
[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')]
How do I remove or ignore the
-0800
from the timestamps? Thanks!