Series.tz_convert(tz, axis=0, level=None, copy=None)[source]#

Convert tz-aware axis to target time zone.

tzstr or tzinfo object or None

Target time zone. Passing None will convert to UTC and remove the timezone information.

axis{0 or ‘index’, 1 or ‘columns’}, default 0

The axis to convert

levelint, str, default None

If axis is a MultiIndex, convert a specific level. Otherwise must be None.

copybool, default True

Also make a copy of the underlying data.


The copy keyword will change behavior in pandas 3.0. Copy-on-Write will be enabled by default, which means that all methods with a copy keyword will use a lazy copy mechanism to defer the copy and ignore the copy keyword. The copy keyword will be removed in a future version of pandas.

You can already get the future behavior and improvements through enabling copy on write pd.options.mode.copy_on_write = True


Object with time zone converted axis.


If the axis is tz-naive.


Change to another time zone:

>>> s = pd.Series(
...     [1],
...     index=pd.DatetimeIndex(['2018-09-15 01:30:00+02:00']),
... )
>>> s.tz_convert('Asia/Shanghai')
2018-09-15 07:30:00+08:00    1
dtype: int64

Pass None to convert to UTC and get a tz-naive index:

>>> s = pd.Series([1],
...               index=pd.DatetimeIndex(['2018-09-15 01:30:00+02:00']))
>>> s.tz_convert(None)
2018-09-14 23:30:00    1
dtype: int64