Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set time zone of values in a Pandas DataFrame?

I'd like to set the time zone of the values of a column in a Pandas DataFrame. I am reading the DataFrame with pandas.read_csv().

like image 569
Yariv Avatar asked Dec 22 '12 10:12

Yariv


People also ask

How do I get pandas timezone?

tzinfo attribute is used to check the timezone of the given Timestamp object. If the timezone is not set then it return None. Example #1: Use Timestamp. tzinfo attribute to find the timezone of the given Timestamp object.

What is the method in pandas to change values into date time data type?

to_datetime. Convert argument to datetime. This function converts a scalar, array-like, Series or DataFrame /dict-like to a pandas datetime object.


1 Answers

You can read dates as UTC directly from read_csv by setting the date_parser function manually, for example:

from dateutil.tz import tzutc
from dateutil.parser import parse

def date_utc(s):
    return parse(s, tzinfos=tzutc)

df = read_csv('my.csv', parse_dates=[0], date_parser=date_utc)

.

If you are creating a timeseries, you can use the tz argument of date_range:

dd = pd.date_range('2012-1-1 1:30', periods=3, freq='min', tz='UTC')

In [2]: dd
Out[2]: 
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-01 01:30:00, ..., 2012-01-01 01:32:00]
Length: 3, Freq: T, Timezone: UTC

.

If your DataFrame/Series is already index by a timeseries, you can use the tz_localize method to set a timezone:

df.tz_localize('UTC')

or if it already has a timezone, use tz_convert:

df.tz_convert('UTC')
like image 56
Andy Hayden Avatar answered Oct 03 '22 07:10

Andy Hayden