熊猫:将时间戳转换为日期时间

问题描述 投票:1回答:1

我在UTC中有一列日期时间字符串,我需要使用EST将其转换为pandas中可行的日期时间格式。我成功转换了专栏,但我觉得我的解决方案很冗长且可以简化,但我不确定如何。这是我目前转换日期的方式:

df['datetime'] = pd.to_datetime(df['datetime'])
df['datetime'] = df['datetime'].dt.strftime('%m/%d/%Y %H:%M:%S')
df['datetime'] = pd.to_datetime(df['datetime'])
df['datetime'] = df['datetime'] - pd.Timedelta(hours=5)

以下是原始字符串格式的一些示例:

2014-02-07T00:25:40Z
2014-02-07T00:25:40Z
2014-02-07T00:25:41Z
2014-02-07T00:25:42Z
2014-02-07T00:25:42Z
2014-02-07T00:25:43Z
2014-02-07T00:25:43Z
2014-02-07T00:25:44Z
2014-02-07T00:25:44Z    
2014-02-07T00:25:44Z

我可以用一行或两行转换此列吗?我尝试在与日期时间格式相同的步骤中执行Timedelta()但收到错误。或者我尝试使用tz_convert()tz_localize(),但收到错误,tz_convert()说我的日期时间不是一个可行的日期时间格式(因此我为什么在格式化后将列重置为日期时间)。使用tz_localize()它只是将-5:00添加到我的日期时间结束,而不是实际从UTC时间减去5小时。

这是输出的外观:

2014-02-06 19:25:40
2014-02-06 19:25:40
2014-02-06 19:25:41
2014-02-06 19:25:42
2014-02-06 19:25:42
2014-02-06 19:25:43
2014-02-06 19:25:43
2014-02-06 19:25:44
2014-02-06 19:25:44
2014-02-06 19:25:44
python pandas datetime
1个回答
1
投票

我会做tz_localizetz_localize

pd.to_datetime(df.date).dt.tz_localize('UTC').\
     dt.tz_convert('EST').\
      dt.strftime('%Y-%m-%d %H:%M:%S')
0    2014-02-06 19:25:40
1    2014-02-06 19:25:41
2    2014-02-06 19:25:42
3    2014-02-06 19:25:42
4    2014-02-06 19:25:43
5    2014-02-06 19:25:43
6    2014-02-06 19:25:44
7    2014-02-06 19:25:44
8    2014-02-06 19:25:44
Name: date, dtype: object
© www.soinside.com 2019 - 2024. All rights reserved.