python df: конвертировать индекс даты из миллисекунд в дни - PullRequest
1 голос
/ 11 апреля 2020

Я абсолютно борюсь с преобразованием моего индекса даты из миллисекунд в нормальное формальное значение, например 2020-04-21. Я могу преобразовать одно значение в дату и время, используя datetime.utcfromtimestamp(int(1586563200000)/1000), что дает мне datetime.datetime(2020, 4, 11, 0, 0)

Затем я использую tsp.strftime("%Y-%m-%d"), чтобы удалить часы / секунды, но напрасно, так как мой вывод 2020-04-11 23:59:59.999

Моя проблема в том, что у меня есть pandas фрейм данных, и большинство операций, которые я пытаюсь выполнить для моего индекса даты, не работают. Итак, я попытался перебрать дату и переиндексировать результат, но это кажется невероятно неэффективным.

no = float(data.close_time.count())
time = []
x= 0
while x != no:
    a = data.close_time[x]
    tsp = datetime.utcfromtimestamp(int(a)/1000)
    time.append(tsp)
    x += 1
data.index = time

Буду очень признателен за любую помощь, осветите проблему! Спасибо

1 Ответ

1 голос
/ 11 апреля 2020

Вы можете проверить pandas.to_datetime

>>> pd.to_datetime(1490195805, unit='s')
Timestamp('2017-03-22 15:16:45')
>>> pd.to_datetime(1490195805433502912, unit='ns')
Timestamp('2017-03-22 15:16:45.433502912')

Если хотите округлить по часам

>>> pd.to_datetime(1490195805//3600*3600, unit='s')
Timestamp('2017-03-22 15:00:00')

Если хотите округлить по дням

>>> pd.to_datetime(1490195805//(3600*24)*3600*24, unit='s')
Timestamp('2017-03-22 00:00:00')

аналогично миллисекунды.

...