Python 指定pandas to_datetime函数的时区

Python 指定pandas to_datetime函数的时区,python,pandas,datetime,timezone,Python,Pandas,Datetime,Timezone,当我对如下所示的数据使用pd.to_datetime函数时,我得到了UTC中的时区感知序列。我知道tz_转换函数,但我认为它不适合我的用途 我的时间都在美国中部时区。如果我没有指定这一点,那么我的21:00 CDT假设为21:00 UTC,tz_convert将错误地给我16:00-5:00。也许我只是被时间的表示弄糊涂了,但据我所知,这将错误地将21:00CDT表示为16:00CDT 如果我可以指定转换时间列时要使用的时区,我觉得这不是问题。或者,如果有一种简单的方法来设置时区而不进行转换。以

当我对如下所示的数据使用pd.to_datetime函数时,我得到了UTC中的时区感知序列。我知道tz_转换函数,但我认为它不适合我的用途

我的时间都在美国中部时区。如果我没有指定这一点,那么我的21:00 CDT假设为21:00 UTC,tz_convert将错误地给我16:00-5:00。也许我只是被时间的表示弄糊涂了,但据我所知,这将错误地将21:00CDT表示为16:00CDT

如果我可以指定转换时间列时要使用的时区,我觉得这不是问题。或者,如果有一种简单的方法来设置时区而不进行转换。以下是一个例子:

df = pd.DataFrame([])
theseAreCentralTime = ['2015-04-24T23:48:28Z','2015-04-24T23:40:59Z','2015-04-24T23:48:28Z']
df['time'] = theseAreCentralTime
df['time'] = pd.to_datetime(df['time'])
print(df['time'].dt.tz)
print(df['time'])
df['time'] = df['time'].dt.tz_convert('US/Central')
print(df['time'].dt.tz)
print(df['time'])
其输出为:

UTC
0   2015-04-24 23:48:28+00:00
1   2015-04-24 23:40:59+00:00
2   2015-04-24 23:48:28+00:00
Name: time, dtype: datetime64[ns, UTC]
US/Central
0   2015-04-24 18:48:28-05:00
1   2015-04-24 18:40:59-05:00
2   2015-04-24 18:48:28-05:00
Name: time, dtype: datetime64[ns, US/Central]
我希望看到的是:

23:48:28-05:00 
23:40:59-05:00
23:48:28-05:00

etc
提前感谢您的帮助

通过更改日期(删除尾随的“Z”),您可以这样做:

df=pd.DataFrame([])
这些时间分别为[2015-04-24T23:48:28'、'2015-04-24T23:40:59'、'2015-04-24T23:48:28']
df['time']=这些是中心时间
df['time']=pd.to_datetime(df['time'])
打印(df['time'].dt.tz_本地化(tz='US/Central'))
这将返回:

0   2015-04-24 23:48:28-05:00
1   2015-04-24 23:40:59-05:00
2   2015-04-24 23:48:28-05:00
Name: time, dtype: datetime64[ns, US/Central]

请注意,日期格式的问题是最后一个“Z”表示日期是UTC。作为一个小技巧,我添加了
df['time']=df['time']+datetime.timedelta(小时=5)
这一转变已经过去,但必须有一种更好的方式适用于支持@JulienRoullé的任何给定TZ:您输入的格式是RFC3339-Z表示UTC。如果这实际上是US/Central,那么您的输入是错误的(格式错误)。顺便说一句。您不必预先删除Z,您可以使用to_datetime和一个适当的格式字符串进行解析,该格式字符串的末尾包含一个文字“Z”。