преобразование часового пояса большого списка временных меток из файла Excel с python - PullRequest
0 голосов
/ 02 мая 2018

У меня есть файл Excel с именем "hello.xlsx". Существует столбец меток времени, который содержит много строк (на данный момент более 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, и я надеюсь, что кто-то может помочь мне понять это, я был бы очень признателен. :)

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Если вы хотите пойти по пути 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))

Лямбда-операция делает 3 вещи:

  1. Установите часовой пояс для записей времени на UTC.
  2. Конвертировать в США / Тихий океан.
  3. Вернуть наивное время. Вам нужно сделать этот шаг для экспорта в Excel. В противном случае Python выдаст ошибку.

Ваш 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
0 голосов
/ 02 мая 2018

В Excel (и во многих других программах для обработки данных) данные о времени хранятся в виде десятичных разрядов, целая часть которых равна одному дню, а плавающая часть представляет собой отношение дня. Таким образом, вы можете в основном вычесть 7/24 (что составляет 7 часов в формате данных времени Excel), чтобы преобразовать значение из UTC в UTC, -7

Например, когда ваши данные о времени находятся в A1, попробуйте написать следующую формулу в A2:

=A1-(7/24)

Изменить для формата:

Для того, чтобы увидеть сформулированную ячейку как дату / время, мы должны соответствующим образом изменить ее формат. Ниже формат будет работать для этого случая: enter image description here

...