Преобразование 13-значных символов Unix в формат даты / времени с пандами - PullRequest
0 голосов
/ 02 октября 2019

У меня есть фрейм данных pandas, содержащий данные из 13 цифр / миллисекунд, как показано ниже, которые я пытаюсь преобразовать в разборчивый формат даты и времени, используя .datetime() или 'pd.Timestamp(), оба из которых, по-видимому, требуют 10-значный /секунд данных.

  Date
0 1569968699999
1 1569968700000
2 1569968759999
3 1569968760000
4 1569968819999

Я попытался преобразовать данные в тип 'int' или даже 'float', используя .astype(int) или .astype(float) с пандами, соответственно, а затем разделив на 1000, чтобы получить 10-digit / seconds данные, которые, очевидно, выдают ошибку «невозможно преобразовать серию в тип« float ».

Я понимаю, почему опция «делить на 1000» будет работать только с определением переменной (как упоминалось во многих других сообщениях / вопросах о переполнении стека).

Я также пытался использовать:

df['Date'] = pd.to_datetime(df['Date'], unit='s')

или

df['Date'] = pd.to_datetime(df['Date'], unit='ms')

, но первая, кажется, добавляет больше цифр к фрейму данных, а вторая возвращает ошибку «целое число со знаком больше максимального».

Любая помощь приветствуется. Спасибо.

1 Ответ

0 голосов
/ 02 октября 2019

Может быть, это может помочь:

import pandas as pd
import numpy as np
import datetime
df=pd.DataFrame()
i=[1569968699999,1569968700000,1569968759999,1569968760000,1569968819999]
df['date']=pd.Series(i)
df['date']=df['date'].apply(lambda d: datetime.datetime.fromtimestamp(int(d)/1000).strftime('%Y-%m-%d %H:%M:%S'))

Вывод:

                  date
0  2019-10-02 01:24:59
1  2019-10-02 01:25:00
2  2019-10-02 01:25:59
3  2019-10-02 01:26:00
4  2019-10-02 01:26:59
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...