Python:使用ffill()将数据帧从每日数据向每小时数据进行上采样

2024-04-27 02:47:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着把我的数据从每天的频率增加到每小时一次,并向前填充丢失的数据。在

我从以下代码开始:

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

Header

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

^{pr2}$

enter image description here

我试着每小时重新取样如下:

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

但我得到了以下错误:

TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'RangeIndex'

我以为我的数据类型已经是pd.to_日期时间以上代码。我所尝试的一切似乎都没有奏效。谁能帮帮我吗?在

我的预期产出如下:

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

等等


Tags: csv数据字符串代码命令readdatavalue
2条回答

我假设你提到的数据集的一些初始行

          DT    VALUE
0   2016-08-01  0
1   2016-08-02  0
2   2016-08-03  0
3   2016-08-04  0
4   2016-08-05  0
5   2016-08-06  0
6   2016-08-07  0
7   2016-08-08  0
8   2016-08-09  0

然后,像这样在DT上建立索引

^{pr2}$

输出:

^{3}$

现在,重新采样你的数据帧

df = df.resample('H').ffill()
df

输出:显示输出的一些初始值

                VALUE
    DT  
2016-08-01 00:00:00 0
2016-08-01 01:00:00 0
2016-08-01 02:00:00 0
2016-08-01 03:00:00 0
2016-08-01 04:00:00 0
2016-08-01 05:00:00 0
2016-08-01 06:00:00 0
2016-08-01 07:00:00 0
2016-08-01 08:00:00 0
2016-08-01 09:00:00 0
2016-08-01 10:00:00 0

试着把它分配回来

df1=df1.set_index('DT')

或者

^{pr2}$

相关问题 更多 >