Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Converting time zone pandas dataframe

Tags:

python

pandas

I have data:

                             Symbol      bid      ask Timestamp                                             2014-01-01 21:55:34.378000  EUR/USD  1.37622  1.37693 2014-01-01 21:55:40.410000  EUR/USD  1.37624  1.37698 2014-01-01 21:55:47.210000  EUR/USD  1.37619  1.37696 2014-01-01 21:55:57.963000  EUR/USD  1.37616  1.37696 2014-01-01 21:56:03.117000  EUR/USD  1.37616  1.37694 

The timestamp is of GMT. Is there a way to convert that to Eastern?

Note when I do:

data.index 

I get output:

<class 'pandas.tseries.index.DatetimeIndex'> [2014-01-01 21:55:34.378000, ..., 2014-01-01 21:56:03.117000] Length: 5, Freq: None, Timezone: None 
like image 281
user1234440 Avatar asked Apr 02 '14 01:04

user1234440


People also ask

How do I change timezone in python?

Use the datetime. astimezone() method to convert the datetime from one timezone to another. This method uses an instance of the datetime object and returns a new datetime of a given timezone.

How remove timezone from a timestamp column in a pandas DataFrame?

tz_localize(None) method can be applied to the dataframe column to remove the timezone information.


1 Answers

Localize the index (using tz_localize) to UTC (to make the Timestamps timezone-aware) and then convert to Eastern (using tz_convert):

import pytz eastern = pytz.timezone('US/Eastern') df.index = df.index.tz_localize(pytz.utc).tz_convert(eastern) 

For example:

import pandas as pd import pytz  index = pd.date_range('20140101 21:55', freq='15S', periods=5) df = pd.DataFrame(1, index=index, columns=['X']) print(df) #                      X # 2014-01-01 21:55:00  1 # 2014-01-01 21:55:15  1 # 2014-01-01 21:55:30  1 # 2014-01-01 21:55:45  1 # 2014-01-01 21:56:00  1  # [5 rows x 1 columns] print(df.index) # <class 'pandas.tseries.index.DatetimeIndex'> # [2014-01-01 21:55:00, ..., 2014-01-01 21:56:00] # Length: 5, Freq: 15S, Timezone: None  eastern = pytz.timezone('US/Eastern') df.index = df.index.tz_localize(pytz.utc).tz_convert(eastern) print(df) #                            X # 2014-01-01 16:55:00-05:00  1 # 2014-01-01 16:55:15-05:00  1 # 2014-01-01 16:55:30-05:00  1 # 2014-01-01 16:55:45-05:00  1 # 2014-01-01 16:56:00-05:00  1  # [5 rows x 1 columns]  print(df.index) # <class 'pandas.tseries.index.DatetimeIndex'> # [2014-01-01 16:55:00-05:00, ..., 2014-01-01 16:56:00-05:00] # Length: 5, Freq: 15S, Timezone: US/Eastern 
like image 162
unutbu Avatar answered Sep 20 '22 02:09

unutbu