Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Converting from local time to UTC in pandas

I am working with pandas dataframes containing local (Chilean) dates and times, e.g.:

local_time
2/9/2023 23:33
2/9/2023 23:39
3/9/2023 1:00
3/9/2023 1:08

I used to convert these dates and times to UTC by applying a bulk time shift (pd.Timedelta(4, "h")) to my local_time column, but now I would like to account for changes in daylight saving times.

I started using tz_location to specify the time zone before converting to UTC using tz_convert:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

import pandas as pd
from datetime import datetime
df = pd.read_csv("Example_dataset.csv")
pd.to_datetime(pd.to_datetime(df['local_time']).apply(lambda x: datetime.strftime(x, '%d-%m-%Y %H:%M:%S'))).dt.tz_localize('America/Santiago').dt.tz_convert('UTC')

This seems to work on the example dataset provided here: data from September 2, 2023 are shifted by 4 hours, while those from September 3 are shifted by 3 hours.

0   2023-09-03 03:33:00+00:00
1   2023-09-03 03:39:00+00:00
2   2023-09-03 04:00:00+00:00
3   2023-09-03 04:08:00+00:00

Is this the correct way to proceed or am I missing anything here?

>Solution :

You need to localize then convert:

df["local_time"] = pd.to_datetime(df["local_time"]).dt.tz_localize("America/Santiago").dt.tz_convert("UTC")
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading