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

时间:2019-04-02 01:47:04

标签: python pandas datetime

我在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

1 个答案:

答案 0 :(得分: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