Вы можете попробовать pd.to_timedelta(values, unit='m')
и добавить дату начала. Пример:
import pandas as pd
import numpy as np
df = pd.DataFrame(
data=dict(
minutes=np.arange(10)*30,
temp=np.random.normal(size=10),
))
origin = pd.Timestamp('2019-01-01')
df['t'] = origin + pd.to_timedelta(df['minutes'], unit='m')
df.set_index('t')
Out[ ]:
minutes temp
t
2019-01-01 00:00:00 0 0.072195
2019-01-01 00:30:00 30 -1.744107
2019-01-01 01:00:00 60 0.847826
2019-01-01 01:30:00 90 -1.434030
2019-01-01 02:00:00 120 1.831201
2019-01-01 02:30:00 150 -0.198310
2019-01-01 03:00:00 180 1.430119
2019-01-01 03:30:00 210 0.104412
2019-01-01 04:00:00 240 1.786200
2019-01-01 04:30:00 270 0.776551
Примечание: в приведенном выше примере используются простые временные метки. Если вам нужно выполнять свою работу с учетом часового пояса, просто измените свое происхождение как таковое. Вот еще один пример:
df = pd.DataFrame(
data=dict(
minutes=np.arange(10) * 30,
temp=np.random.normal(size=10),
))
origin = pd.Timestamp('2019-03-09 23:15:00', tz='America/Los_Angeles')
df.assign(date=origin + pd.to_timedelta(df['minutes'], unit='m')).set_index('date')
Out[ ]:
minutes temp
date
2019-03-09 23:15:00-08:00 0 1.467329
2019-03-09 23:45:00-08:00 30 -0.645978
2019-03-10 00:15:00-08:00 60 -0.673867
2019-03-10 00:45:00-08:00 90 -0.133427
2019-03-10 01:15:00-08:00 120 -0.888888
2019-03-10 01:45:00-08:00 150 -0.626973
2019-03-10 03:15:00-07:00 180 1.613762
2019-03-10 03:45:00-07:00 210 0.314589
2019-03-10 04:15:00-07:00 240 -0.100282
2019-03-10 04:45:00-07:00 270 0.447192
Обратите внимание, как он переключается с PST
на PDT
в соответствии с правилами этого часового пояса.