首页 > 解决方案 > Python:使用 ffill() 将数据帧从每日数据上采样到每小时数据

问题描述

我正在尝试将我的数据从每日频率上采样到每小时频率并转发填充缺失的数据。

我从以下代码开始:

df1 = pd.read_csv("DATA.csv")   
df1.head(5)

标题

然后我使用以下内容转换为日期时间字符串并将日期/时间设置为索引:

df1['DT'] = pd.to_datetime(df1['DT']).dt.strftime('%Y-%m-%d %H:%M:%S')
df1.set_index('DT')

在此处输入图像描述

我尝试按如下方式每小时重新采样:

df1['DT'] = df1.resample('H').ffill()

但我收到以下错误:

TypeError:仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但获得了“RangeIndex”实例

我认为我的 dtype 已经是上面 pd.to_datetime 代码指示的日期时间。我尝试的任何方法似乎都不起作用。谁能帮帮我吗?

我的预期输出如下:

DT                  VALUE
2016-08-01 00:00:00 0.000000
2016-08-01 01:00:00 0.000000
2016-08-01 02:00:00 0.000000

等等

该文件本身大约有 1000 行。前 50 行左右为零,以便澄清实际数据的位置:

DT                  VALUE
2018-12-13 00:00:00 24000.000000
2018-12-13 01:00:00 24000.000000
2018-12-13 02:00:00 24000.000000
...
2018-12-13 23:00:00 24000.000000
2018-12-14 00:00:00 26000.000000
2018-12-14 01:00:00 26000.000000

等等

标签: pythonpandas

解决方案


尝试分配回去

df1=df1.set_index('DT')

或者

df1.set_index('DT',inplace=True)

推荐阅读