我在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
我会做tz_localize
和tz_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