python - 如何在熊猫数据框中填写缺失的 5 分钟间隔
问题描述
我有一个数据框每 5 分钟保存一次交易数据,比如
open close
datetime
2015-02-02 08:00:00 43.5 NaN
2015-02-02 08:10:00 43.3 0
2015-02-02 08:15:00 43.2 7
2015-02-02 08:20:00 NaN NaN
2015-02-02 08:25:00 43.1 9
2015-02-02 08:35:00 43.0 9
2015-02-02 08:40:00 43.0 11
2015-02-02 08:45:00 NaN NaN
2015-02-02 08:50:00 NaN NaN
2015-02-02 08:55:00 NaN NaN
2015-02-02 09:00:00 43.1 9
我希望像 08:30:00 时间戳一样填充缺失的行,np.nan
然后向前填充。我已经研究过使用该pd.date_range
函数计算从开始日期到结束日期每五分钟间隔的索引,并且只是天真地将其分配为我的数据框的索引,但正如我所想的那样,这会引发错误。
我还查看了这个问题,这与我所问的非常相似,但答案使用resample
. 我不知道这如何解决了 OP 的问题,因为据我所知,您不能将重采样对象视为数据框并以相同的方式查询它。
编辑:我最终找到了完成这项工作的方法。我用我想要使用的整个日期范围创建了一个具有相同列的数据框date_range
,然后使用我从交易数据中实际获得的值更新这个数据框update
解决方案
要从 resample 对象中获取某些内容,您需要添加一个调度方法(请参阅文档),例如:
import numpy as np
import pandas as pd
df = pd.DataFrame({'open': [43.5,43.3,43.2,np.NaN,43.1,43.0,43.0,np.NaN,np.NaN,np.NaN,43.1],
'close': [np.NaN,0,7,np.NaN,9,9,11,np.NaN,np.NaN,np.NaN,9]},
index = pd.to_datetime(['2015-02-02 08:00:00','2015-02-02 08:10:00','2015-02-02 08:15:00',
'2015-02-02 08:20:00','2015-02-02 08:25:00','2015-02-02 08:35:00',
'2015-02-02 08:40:00','2015-02-02 08:45:00','2015-02-02 08:50:00',
'2015-02-02 08:55:00','2015-02-02 09:00:00']))
df1 = df.resample('5min').mean()
# df1
# open close
# 2015-02-02 08:00:00 43.5 NaN
# 2015-02-02 08:05:00 NaN NaN
# 2015-02-02 08:10:00 43.3 0.0
# 2015-02-02 08:15:00 43.2 7.0
# 2015-02-02 08:20:00 NaN NaN
# 2015-02-02 08:25:00 43.1 9.0
# 2015-02-02 08:30:00 NaN NaN
# 2015-02-02 08:35:00 43.0 9.0
# 2015-02-02 08:40:00 43.0 11.0
# 2015-02-02 08:45:00 NaN NaN
# 2015-02-02 08:50:00 NaN NaN
# 2015-02-02 08:55:00 NaN NaN
# 2015-02-02 09:00:00 43.1 9.0
推荐阅读
- mysql - 如何显示两个共享 id 的表的结果?
- c++ - std::is_same - 从integral_constant 继承函数的用例
- powershell - 使用 PowerShell 和新式身份验证连接到 Exchange Online(无任何依赖项)
- android - 如何为新创建的实例添加 Fragment 标签?
- php - PHP中如何让用户选择输出目录
- java - 队列实现不返回第一个元素
- r - 在 ggplot 中有多行(熔融数据)的工作日解决方法吗?
- python - Keras 多层神经网络精度
- css - 选择焦点后保持背景颜色 Microsoft Edge
- java - Android Asset Manager 无法从 assets 目录加载 wav 文件资源