我试图在包含小时价格的数据集中提取每天的最小值。我想对每个小时分别执行此操作,因为我以后想在再次组合数据集之前向每个小时添加其他信息(这就是为什么我想在datetime中保留小时)。
这是我的数据:
Price_REG1 Price_REG2 ... Price_24_3 Price_24_4
date ...
2020-01-01 00:00:00 30.83 30.83 ... NaN NaN
2020-01-01 01:00:00 28.78 28.78 ... NaN NaN
2020-01-01 02:00:00 28.45 28.45 ... 30.83 30.83
2020-01-01 03:00:00 27.90 27.90 ... 28.78 28.78
2020-01-01 04:00:00 27.52 27.52 ... 28.45 28.45
要提取最小值,我使用以下命令:
df_min_1 = df_hour_1[['Price_REG1', 'Price_REG2', 'Price_REG3',
'Price_REG4']].between_time('00:00', '23:00').resample('d').min()
这给我留下了这个:
Price_REG1 Price_REG2 Price_REG3 Price_REG4
date
2020-01-01 25.07 25.07 25.07 25.07
2020-01-02 12.07 12.07 12.07 12.07
2020-01-03 0.14 0.14 0.14 0.14
2020-01-04 3.83 3.83 3.83 3.83
2020-01-05 25.77 25.77 25.77 25.77
我明白样本是这样做的,但我想知道是否有任何方法可以避免这种情况,或者是否有任何其他方法可以达到我所追求的结果。
澄清一下,这是我想要的:
Price_REG1 Price_REG2 Price_REG3 Price_REG4
date
2020-01-01 01:00:00 25.07 25.07 25.07 25.07
2020-01-02 01:00:00 12.07 12.07 12.07 12.07
2020-01-03 01:00:00 0.14 0.14 0.14 0.14
2020-01-04 01:00:00 3.83 3.83 3.83 3.83
2020-01-05 01:00:00 25.77 25.77 25.77 25.77
我没有找到一个很好的解决这个问题,我设法得到我想要的地方,虽然用这个方法:
t = datetime.timedelta(hours=1)
df_min = df_min.reset_index()
df_min['date'] = df_min['date'] + t
df_min.set_index('date', inplace = True)
df_hour_1 = pd.concat([df_hour_1, df_min], axis=1)
也就是说,我首先创建一个timedelta为01:00:00的timedelta,然后重置索引以便能够将timedelta添加到日期列。通过这种方式,我能够联系df_hour和df_min,同时仍然保持时间,以便我可以在后面的步骤中连接所有24个数据集。