У меня есть фрейм данных pandas с многочисленными столбцами, один из которых — время по GPS, например:
Как мне преобразовать это в datetime или UTC в Python?
Извините, да, это Pandas DataFrame. Я искал это, но, похоже, ничего не нашел.






Этот формат называется временной меткой 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 Ах, не подумал об этом! Надеюсь, кто-то даст лучший ответ в этом отношении. Или я обновлю, если я должен придумать что-то.
Вы можете использовать метод 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.
Ах, не знал, что это действительно сработает! Это показывает, как многому еще предстоит научиться с любым пакетом Python, ха-ха. Спасибо!!
какой у вас фрейм данных (например, Pandas DataFrame)? скорее всего, он предоставит методы для преобразования ваших временных меток в другой формат.