如何用Pytz转换datetime,timestamp,series的时区

本文详细介绍了如何使用Pytz库进行时区转换,包括查看所有时区、创建无时区信息的时间戳和日期时间,以及对Pandas Series中的时区处理,如直接使用tz_localize/tz_convert方法,将tz-aware值转换为tz-naive时间戳,以及将tz-naive时间戳转化为字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Show the arguments of time-zone in all_timezone attibutes in pytz

import pandas as pd
import pytz
import datetime 

print(pytz.all_timezones[:20:])
print(list(filter(lambda x: 'Singapore' in x, pytz.all_timezones)))

2. Create a timezone_naive timestamp

#timestamp is function of pandas
import pandas as pd
import pytz
import datetime 
ts=pd.Timestamp('2019-08-13 07:00:00')
ts=ts.tz_localize('Asia/Singapore')
ts.tz_convert('America/Denver')

3. Create a time_zone naive datetime using datetime module

#under datetime class , there are datetime() and date =() functions 
a=datetime.datetime(2019,8,9,7,0,0)
b=datetime.date(2019,8,9)
print(type(a)) #type:<class 'datetime.datetime'> cannot use tz_localize()

#to use tz_localize, datetime/date object must be converted to Timestamp 
a=pd.Timestamp(a)
b=pd.Timestamp(b)
print(a)
print(b)

a=a.tz_localize('Singapore')
b=b.tz_localize('Singapore')
print(a)
print(b)

a=a.tz_convert('America/Denver')
b=b.tz_convert('America/Denver')

print(a)
print(b)

4. Create a date range: the element inside of index object are already timestamp, can be used tz_localzie directly

c=pd.date_range('2019-01-03 09:00:00',periods=2,freq='d')
print(type(c[0]))   # type: <class 'pandas._libs.tslibs.timestamps.Timestamp'>
print(type(c))   #type: <class 'pandas.core.indexes.datetimes.DatetimeIndex'>
c=c.tz_localize('Asia/Singapore').tz_convert('America/Denver')
print(c)

5. Series:

5.1 Timestamp is index: use tz_localize/tz_convert directly

import pandas as pd
import numpy as np
series_1=pd.Series(np.linspace(0,9,10),index=pd.date_range('2019-01-01',periods=10,freq='d'))
series_1=series_1.tz_localize('Asia/Singapore').tz_convert('America/Denver')

5.2 Timestamp is values: use dt.tz_localize/tz_convert

import pandas as pd
import numpy as np
series_2=pd.Series(pd.date_range('2019-01-01',periods=10,freq='d'),index=np.linspace(0,9,10))
series_2=series_2.dt.tz_localize('Asia/Singapore').dt.tz_convert('America/Denver')

5.3 convert tz-aware values into tz_naive timestamp : use tz_localize(None)

import pandas as pd
import numpy as np
series_3=pd.Series(pd.date_range('2019-01-01',periods=10,freq='d'),index=np.linspace(0,9,10))
series_3=series_3.dt.tz_localize('Asia/Singapore').dt.tz_convert('America/Denver')
series_3=series_3.dt.tz_localize(None)

5.4 convert a tz_naive timestamp into str: use astype(str)

import pandas as pd
import numpy as np
series_4=pd.Series(pd.date_range('2019-01-01',periods=10,freq='d'),index=np.linspace(0,9,10))
series_4=series_4.dt.tz_localize('Asia/Singapore').dt.tz_convert('America/Denver')
series_4=series_4.dt.tz_localize(None).astype(str)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值