python - 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
等等
解决方案
尝试分配回去
df1=df1.set_index('DT')
或者
df1.set_index('DT',inplace=True)
推荐阅读
- javascript - 正则表达式替换所有不匹配的内容
- variables - 使用文本字段输入获取值输出
- c++ - 基于单词随机实例化
- vaadin - 如何创建可以重置为新值的 Vaadin 12“iFrame”组件
- sql - 如何获取特定时期内已付款的客户或客户数量
- excel - 请帮我修复公式以使用 IF(AND(INDIRECT(ADDRESS 函数
- neo4j - 如何在 Neo4j 密码中使用包含?
- r - 使用 ggplot2 创建用于绘图的函数,并为该函数提供数据框、x 和 y。如何正确引用轴?
- javascript - 如何为此 jQuery 代码定义 if 语句?
- arduino - 在 Arduino 上制作一个由多个端口组成的“虚拟端口”