Если у вас есть DataFrame
с индексом numeri c, который представляет время в определенной единице, вам следует указать эту единицу, если вы хотите преобразовать в datetime
(см. здесь для возможных спецификаторы единиц). В противном случае to_datetime
будет предполагать, что число по умолчанию представляет собой наносекунды. Пример:
import numpy as np
import pandas as pd
df = pd.DataFrame({'v': np.random.rand(10)}, index=np.arange(10))
# df.index
# Int64Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype='int64')
# e.g. assuming unit is seconds:
df.index = pd.to_datetime(df.index, origin=pd.Timestamp('2012-01-01 00:00:00'), unit='s')
# df
# 2012-01-01 00:00:00 0.393867
# 2012-01-01 00:00:01 0.252125
# 2012-01-01 00:00:02 0.639876
# 2012-01-01 00:00:03 0.804882
# 2012-01-01 00:00:04 0.582824
# 2012-01-01 00:00:05 0.719932
# 2012-01-01 00:00:06 0.491117
# 2012-01-01 00:00:07 0.299446
# 2012-01-01 00:00:08 0.495090
# 2012-01-01 00:00:09 0.553190
Обратите внимание, что если вы хотите отображать индекс datetime
в определенном формате, вам нужно будет преобразовать в строку с помощью strftime
:
df.index.strftime('%Y%m%d% H:%M:%S')
# Index(['2012-01-01 00:00:00', '2012-01-01 00:00:01', '2012-01-01 00:00:02',
# '2012-01-01 00:00:03', '2012-01-01 00:00:04', '2012-01-01 00:00:05',
# '2012-01-01 00:00:06', '2012-01-01 00:00:07', '2012-01-01 00:00:08',
# '2012-01-01 00:00:09'],
# dtype='object')