python - 使用 python 重新采样 olhc 数据帧时出错
问题描述
当尝试将 OHLC 数据帧从 1m 重新采样到每小时时,我收到此错误:
数据框
df.info()
# Column Dtype
--- ------ -----
0 Date_Time datetime64[ns]
1 Open float64
2 High float64
3 Low float64
4 Close float64
df.tail()
Date_Time Open High Low Close
1692259 2014-12-30 20:51:00 2321.0 1213.0 1223.0 2334.0
1692260 2014-12-30 20:52:00 2342.0 2322.0 2332.0 2332.0
1692261 2014-12-30 20:53:00 3421.0 2322.0 2334.0 2123.0
1692262 2014-12-30 20:54:00 2312.0 2332.0 2324.0 2321.0
1692263 2014-12-30 20:55:00 2312.0 1212.0 2343.0 2323.0
...
尝试 1
df_ohlc = df.resample('60T', on='Date_Time').ohlc()
错误
DataError: No numeric types to aggregate
尝试 2
使用 venky__ 推荐到另一个具有类似解决方案的帖子
df_ohlc = df.resample('60T', on='Date_Time').agg({
'Open':'first',
'High':'max',
'Low':'min',
'Close':'last'
})
包括 NaN 但 df 是干净的。如何避免这种情况?
Open High Low Close
Date_Time
2015-12-26 18:00:00 NaN NaN NaN NaN
2015-12-26 19:00:00 NaN NaN NaN NaN
2015-12-26 20:00:00 NaN NaN NaN NaN
2015-12-26 21:00:00 NaN NaN NaN NaN
2015-12-26 22:00:00 NaN NaN NaN NaN
解决方案
下一个版本的代码对我有用,由于您提供的行数很少,我只进行了 2 分钟的聚合。
我认为不工作的原因是由于您的数据采用字符串格式,而不是需要日期时间列采用日期时间格式,其余的采用浮点数格式,而不是字符串。我从代码中的字符串正确转换为日期时间。
或者不工作的另一个原因是因为你没有这样做df.set_index('Date_Time')
,我也在我的代码中这样做了。
import io, pandas as pd, numpy as np
df = pd.read_csv(io.StringIO("""
Date_Time,Open,High,Low,Close
2014-12-30 20:51:00,2321.0,1213.0,1223.0,2334.0
2014-12-30 20:52:00,2342.0,2322.0,2332.0,2332.0
2014-12-30 20:53:00,3421.0,2322.0,2334.0,2123.0
2014-12-30 20:54:00,2312.0,2332.0,2324.0,2321.0
2014-12-30 20:55:00,2312.0,1212.0,2343.0,2323.0
"""))
df.Date_Time = pd.to_datetime(df.Date_Time)
df.set_index('Date_Time')
print(df)
df = df.resample('2min', on = 'Date_Time').agg({
'Open':'first',
'High':'max',
'Low':'min',
'Close':'last',
})
print(df)
输出是:
Date_Time Open High Low Close
0 2014-12-30 20:51:00 2321.0 1213.0 1223.0 2334.0
1 2014-12-30 20:52:00 2342.0 2322.0 2332.0 2332.0
2 2014-12-30 20:53:00 3421.0 2322.0 2334.0 2123.0
3 2014-12-30 20:54:00 2312.0 2332.0 2324.0 2321.0
4 2014-12-30 20:55:00 2312.0 1212.0 2343.0 2323.0
Open High Low Close
Date_Time
2014-12-30 20:50:00 2321.0 1213.0 1223.0 2334.0
2014-12-30 20:52:00 2342.0 2322.0 2332.0 2123.0
2014-12-30 20:54:00 2312.0 2332.0 2324.0 2323.0
推荐阅读
- node.js - Node.js Multer req.file 未定义
- javascript - Webpack 5:重新加载/卸载联合模块
- visual-studio-code - 随机人的 GitHub 链接在启动我的 VS Code 时打开
- angularjs - 图表 js 图形未显示在画布上
- python - 为什么 cv2.imread 无法从我的路径文件夹中读取我的所有文件夹?
- reactjs - 如何修复错误类型 void 不可分配给使用 react 和 typescript 的类型?
- powershell - powershell:for循环只循环一次而不是多次
- javascript - 使用JS读取一个JS文件的内容
- postgresql - 如何使用 pgadmin4 docker 容器连接到本地 postgres 数据库
- vb.net - 如何在 CellValueChanged 事件后为 DataGridView 中的已编辑单元格添加红色边框