Как преобразовать временной ряд панд с часом (h) в качестве единицы индекса в формат даты и времени панд? - PullRequest
2 голосов
/ 08 мая 2019

Я работаю с данными временных рядов, где мой фрейм данных pandas имеет индексы, указанные в часах, например:

[0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, ...]

Это продолжается несколько тысяч часов. Я знаю, что первое измерение было сделано, скажем, May 1, 2017 12:00. Как я могу использовать эту информацию, чтобы превратить мои индексы в формат даты и времени панд?

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Вы можете добавить часы к индексу с помощью параметра origin в to_datetime для DatetimeIndex:

idx = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4]
df = pd.DataFrame({'a':range(13)}, index=idx)

start = 'May 1, 2017 12:00'
df.index = pd.to_datetime(df.index, origin=start, unit='h')
print (df)
                      a
2017-05-01 12:00:00   0
2017-05-01 12:12:00   1
2017-05-01 12:24:00   2
2017-05-01 12:36:00   3
2017-05-01 12:48:00   4
2017-05-01 13:00:00   5
2017-05-01 13:12:00   6
2017-05-01 13:24:00   7
2017-05-01 13:36:00   8
2017-05-01 13:48:00   9
2017-05-01 14:00:00  10
2017-05-01 14:12:00  11
2017-05-01 14:24:00  12
0 голосов
/ 08 мая 2019

Вы можете использовать pandas.date_range, чтобы указать количество периодов на основе длины вашего index (в данном случае список) и указать частоту, которая в этом случае 12min или 1/5 H:

l = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4]

data = {'Num':np.random.randint(1, 10, size=len(l))}

idx = pd.date_range(start=pd.Timestamp(2017, 5, 1, 12), periods=len(l), freq='12T')

df = pd.DataFrame(data = data, index= idx)

print(df)
                     Num
2017-05-01 12:00:00    8
2017-05-01 12:12:00    3
2017-05-01 12:24:00    3
2017-05-01 12:36:00    4
2017-05-01 12:48:00    8
2017-05-01 13:00:00    3
2017-05-01 13:12:00    6
2017-05-01 13:24:00    3
2017-05-01 13:36:00    4
2017-05-01 13:48:00    9
2017-05-01 14:00:00    5
2017-05-01 14:12:00    2
2017-05-01 14:24:00    6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...