python - 盘中数据的每日高点/低点
问题描述
让我有一个带有日期时间索引的数据框,如下所示:
date_time open high low close vol
2018-05-13 18:00:00 70.54 70.60 70.42 70.55 2665
2018-05-13 18:15:00 70.55 70.59 70.53 70.58 378
2018-05-13 18:30:00 70.58 70.70 70.57 70.69 1470
2018-05-13 18:45:00 70.68 70.68 70.63 70.65 427
...
2018-05-14 00:00:00 70.46 70.47 70.40 70.41 1276
2018-05-14 00:15:00 70.41 70.45 70.38 70.39 1356
2018-05-14 00:30:00 70.39 70.48 70.39 70.46 1161
2018-05-14 00:45:00 70.46 70.47 70.43 70.46 359
我需要另外两列具有 DAILY High 和 DAILY low 值。我正在尝试这样做:
df['day_high']= x.resample('D').high.max()
df.day_high = x.day_high.fillna(method='ffill')
它在 00:00:00 数据时间存在的日子里完美运行。因此,14.05.2018 我有一个日期时间为 00:00:00 的值,并且我的代码有效。但是 2018-05-13 日从 18:00 开始,我的代码返回“NaN”值(我知道,为什么,但我不知道如何编写正确的代码)。
你可以帮帮我吗?谢谢。
解决方案
我相信需要Resampler.transform
:
df['day_high']= df.resample('D').high.transform('max')
df['day_low']= df.resample('D').low.transform('min')
print (df)
open high low close vol day_high day_low
date_time
2018-05-13 18:00:00 70.54 70.60 70.42 70.55 2665 70.70 70.42
2018-05-13 18:15:00 70.55 70.59 70.53 70.58 378 70.70 70.42
2018-05-13 18:30:00 70.58 70.70 70.57 70.69 1470 70.70 70.42
2018-05-13 18:45:00 70.68 70.68 70.63 70.65 427 70.70 70.42
2018-05-14 00:00:00 70.46 70.47 70.40 70.41 1276 70.48 70.38
2018-05-14 00:15:00 70.41 70.45 70.38 70.39 1356 70.48 70.38
2018-05-14 00:30:00 70.39 70.48 70.39 70.46 1161 70.48 70.38
2018-05-14 00:45:00 70.46 70.47 70.43 70.46 359 70.48 70.38
推荐阅读
- firebase - Firestore 安全规则和 vuefire
- python - 配置环境/路径以从终端运行 python 脚本。对于 Mac
- java - 如何使用 LocalDate 值查询 JPA LocalDateTime 字段?
- python - TensorFlow Keras MaxPool2D 用 CTC 损失打破 LSTM?
- android-studio - Dart runtimeType 没有返回正确的类型
- vb.net - 如何在 DataGridView 中添加新行并用数据填充
- html - 工具提示左箭头不能改变颜色
- php - 带有身份验证的php curl POST
- python - NameError:未定义名称“test_scores”
- android - 如何检查“lateinit”变量是否已在扩展方法中初始化?