Преобразование времени GPS в дату и время в Python

У меня есть фрейм данных pandas с многочисленными столбцами, один из которых — время по GPS, например:

GPS_время 1635751985 1635751985 1635751986 1635751987 1635751987 ..........

Как мне преобразовать это в datetime или UTC в Python?

какой у вас фрейм данных (например, Pandas DataFrame)? скорее всего, он предоставит методы для преобразования ваших временных меток в другой формат.

ti7 10.10.2022 19:22

Извините, да, это Pandas DataFrame. Я искал это, но, похоже, ничего не нашел.

matrix_season 10.10.2022 19:23
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
76
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Этот формат называется временной меткой Unix.

Вы можете преобразовать его в объект datetime следующим образом:

from datetime import datetime

dt = datetime.fromtimestamp(1635751985)

# use a for-loop to convert multiple items

По умолчанию объект будет в вашем часовом поясе.

Если вы хотите UTC, вы можете использовать библиотеку pytz:

from pytz import timezone

dt = datetime.fromtimestamp(1635751985, timezone('UTC'))

это будет преобразовывать только одно значение за раз, что очень неэффективно, если у них большой фрейм данных!

ti7 10.10.2022 19:20

@ ti7 Ах, не подумал об этом! Надеюсь, кто-то даст лучший ответ в этом отношении. Или я обновлю, если я должен придумать что-то.

xyres 10.10.2022 19:23
Ответ принят как подходящий

Вы можете использовать метод Pandas .to_datetime(), чтобы сделать это преобразование!

>>> df = pd.DataFrame({"dates": [1635751985, 1635751985, 1635751986]})
>>> df
        dates
0  1635751985
1  1635751985
2  1635751986
>>> pd.to_datetime(df["dates"], unit = "s")
0   2021-11-01 07:33:05
1   2021-11-01 07:33:05
2   2021-11-01 07:33:06
Name: dates, dtype: datetime64[ns]

Обратите внимание, что это преобразование из ваших целочисленных значений в сохранение значений как datetime64[ns]
После преобразования вы можете контролировать их отображение с помощью .dt.strftime() (см. Как изменить формат даты и времени в Pandas)

Хороший ответ. Я провел несколько тестов производительности (со 100 тыс. строк), и это примерно в 3 раза быстрее, чем ручной цикл for.

xyres 10.10.2022 19:49

Ах, не знал, что это действительно сработает! Это показывает, как многому еще предстоит научиться с любым пакетом Python, ха-ха. Спасибо!!

matrix_season 10.10.2022 20:00

Другие вопросы по теме