我有Pandas DataFrame,我正试图找出如何在我的DF中的日期时间值之间插入值。理想情况下,我应该每小时有一行,"价格"只是由之前的价格填充。
如果我有一个这样的表:
day_hour price
---------------------------------
2020-01-01 05:00:00 12.083333
2020-01-01 09:00:00 11.047170
2020-01-01 10:00:00 11.678125
2020-01-01 11:00:00 11.920000
2020-01-01 12:00:00 12.012500
我怎么把它变成这个?:
day_hour price
---------------------------------
2020-01-01 05:00:00 12.083333
2020-01-01 06:00:00 12.083333
2020-01-01 07:00:00 12.083333
2020-01-01 08:00:00 12.083333
2020-01-01 09:00:00 11.047170
2020-01-01 10:00:00 11.678125
2020-01-01 11:00:00 11.920000
2020-01-01 12:00:00 12.012500
我们可以set_index
然后resample.ffill
到每小时(1H
)和reset_index
来恢复列:
df = df.set_index('day_hour').resample('1H').ffill().reset_index()
df
:
day_hour price
0 2020-01-01 05:00:00 12.083333
1 2020-01-01 06:00:00 12.083333
2 2020-01-01 07:00:00 12.083333
3 2020-01-01 08:00:00 12.083333
4 2020-01-01 09:00:00 11.047170
5 2020-01-01 10:00:00 11.678125
6 2020-01-01 11:00:00 11.920000
7 2020-01-01 12:00:00 12.012500
设置:
import pandas as pd
df = pd.DataFrame({
'day_hour': pd.to_datetime(['2020-01-01 05:00:00', '2020-01-01 09:00:00',
'2020-01-01 10:00:00', '2020-01-01 11:00:00',
'2020-01-01 12:00:00']),
'price': [12.083333, 11.04717, 11.678125, 11.92, 12.0125]
})