Timestamp преобразовать в дату pandas - любой вариант выдает ошибку

Дан датафрейм:

a = [[1513382400000, 702.244612799479],
 [1513468800000, 728.700471211578],
 [1513555200000, 798.115404033608],
 [1513641600000, 829.989201766042],
 [1513728000000, 813.403602277568]]

data = pd.DataFrame(a, columns = ["Timestamp","Price"])

Нужно преобразовать столбец Timestamp в дату (без времени).

Вариант dt.date выдает ошибку

data["Timestamp"].dt.date
AttributeError: Can only use .dt accessor with datetimelike values

Тип данных у столбца inf64.

Вариант to_datetime unit 's' выдает ошибку:

data["Date"] = pd.to_datetime(data["Timestamp"],unit='s')
OutOfBoundsDatetime: cannot convert input with unit 's'

Вариант to_datetime без unit 's'создает столбец с датой, но проставляет 1970 год.

data["Date"] = pd.to_datetime(data["Timestamp"])

    Timestamp   Price   Date
0   1513382400000   702.244613  1970-01-01 00:25:13.382400
1   1513468800000   728.700471  1970-01-01 00:25:13.468800
2   1513555200000   798.115404  1970-01-01 00:25:13.555200
3   1513641600000   829.989202  1970-01-01 00:25:13.641600
4   1513728000000   813.403602  1970-01-01 00:25:13.728000

Как добавить столбец с правильной датой (и сразу без времени)? Спасибо


Ответы (1 шт):

Автор решения: Namerek
import pandas as pd
from datetime import datetime
a = [[1513382400000, 702.244612799479],
 [1513468800000, 728.700471211578],
 [1513555200000, 798.115404033608],
 [1513641600000, 829.989201766042],
 [1513728000000, 813.403602277568]]

data = pd.DataFrame(a, columns = ["Timestamp","Price"])
data['Date'] = data['Timestamp'].apply(
    lambda x: datetime.fromtimestamp(x / 1000).date()
)

Или так:

data['Date'] = pd.to_datetime(
    data['Timestamp'], unit='ms', errors='raise'
).apply(datetime.date)

введите сюда описание изображения

→ Ссылка