python-将夏令时的 pandas 时间戳转换为本地时间字符串 [英] python pandas TimeStamps to local time string with daylight saving

查看:256
本文介绍了python-将夏令时的 pandas 时间戳转换为本地时间字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有TimeStamps列的数据框.我想将其转换为本地时间字符串,即夏令时.

I have a dataframe with a TimeStamps column. I want to convert it to strings of local time, ie with daylight saving.

所以我想将以下ts [0]转换为"2015-03-30 03 :55:05".熊猫似乎知道DST,但仅当您在序列上调用.values时.

So I want to convert ts[0] below to "2015-03-30 03:55:05". Pandas seems to be aware of DST, but only when you call .values on the series.

谢谢

(Pdb) ts = df['TimeStamps']
(Pdb) ts
0   2015-03-30 02:55:05.993000
1   2015-03-30 03:10:20.937000
2   2015-03-30 10:09:19.947000
Name: TimeStamps, dtype: datetime64[ns]
(Pdb) ts[0]
Timestamp('2015-03-30 02:55:05.993000')
(Pdb) ts.values
array(['2015-03-30T03:55:05.993000000+0100',
   '2015-03-30T04:10:20.937000000+0100',
   '2015-03-30T11:09:19.947000000+0100'], dtype='datetime64[ns]')

推荐答案

DST与您的位置有关(例如,伦敦DST在纽约之后的几周开始).您首先需要使时间戳记时区:

DST is relative to your location (e.g. London DST began a few weeks after NY). You first need to make the timestamp timezone aware:

from pytz import UTC
from pytz import timezone
import datetime as dt

ts = pd.Timestamp(datetime.datetime(2015, 3, 31, 15, 47, 25, 901597))
# or...
ts = pd.Timestamp('2015-03-31 15:47:25.901597')
# ts is a Timestamp, but it has no idea where in the world it is...
>>> ts.tzinfo is None
True

# So the timestamp needs to be localized.  Assuming it was originally a UTC timestamp, it can be localized to UTC.
ts_utc = ts.tz_localize(UTC)
# Once localized, it can be expressed in other timezone regions, e.g.: 
eastern = pytz.timezone('US/Eastern')
ts_eastern = ts_utc.astimezone(eastern)
# And to convert it to an ISO string of local time (e.g. eastern):
>>> ts_eastern.isoformat()
'2015-03-30T08:09:27.143173-04:00'

请参见 pytz

See pytz or datetime for more information.

这篇关于python-将夏令时的 pandas 时间戳转换为本地时间字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆