我有一个名为“hello.xlsx”的excel文件。有一列时间戳有很多行(现在超过80,000行)。该文件基本上如下所示:
03/29/2018 19:24:50
03/29/2018 19:24:59
03/29/2018 19:24:59
03/29/2018 19:25:02
03/29/2018 19:25:06
03/29/2018 19:25:10
03/29/2018 19:25:20
03/29/2018 19:25:27
03/29/2018 19:25:27
03/29/2018 19:25:36
03/29/2018 19:25:49
等等......
这些时间戳是UTC时间,我需要将它们转换为美国太平洋时间(UTC,-7)。
我在网上搜索并试图在excel中使用一些公式,但未能使其正确。然后我写了一段代码,如下所示:
df = pd.read_excel('hello1.xlsx', header=None)
df[0] = pd.to_datetime(df[0]).dt.astimezone(timezone('US/Pacific'))
df.to_excel('out.xlsx', index=False, header=False)
我尝试过运行它,但似乎有问题。我想我需要更改或添加一些代码的第二行。我对python很新,我希望有人可以帮我解决这个问题,我真的很感激。 :)
答案 0 :(得分:1)
在Excel(以及许多其他数据软件)中,时间数据保持为小数,整数部分为一天,浮动部分为一天的比率。所以你基本上可以减去7/24(这是Excel的7小时时间数据格式),以便将一个值从UTC转换为UTC,-7
例如,当您的时间数据位于A1
时,请尝试将以下公式写入A2
:
=A1-(7/24)
编辑格式:
答案 1 :(得分:0)
如果你想采用Python的方式,你必须使用apply
方法,并在转换前将时间分配为UTC时间:
import pytz
df[0] = df[0].apply(lambda x: x.replace(tzinfo=pytz.utc).astimezone(pytz.timezone('US/Pacific')).replace(tzinfo=None))
lambda操作有三件事:
您的df
将如下所示:
0
0 2018-03-29 12:24:50
1 2018-03-29 12:24:59
2 2018-03-29 12:24:59
3 2018-03-29 12:25:02
4 2018-03-29 12:25:06
5 2018-03-29 12:25:10
6 2018-03-29 12:25:20
7 2018-03-29 12:25:27
8 2018-03-29 12:25:27
9 2018-03-29 12:25:36
10 2018-03-29 12:25:49