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)
