如何通过 Pandas 从 OHLC 数据中获得前 15 分钟的高值?

问题描述

这是一个数据框,其中包含来自 OHLC2011-2021 分钟数据

我想创建另一列名为 "first15 high" 的列,其中我想要 first 15 minute high,即当天 9:15 至 9:30 的最高点。

所需的输出(在黄色列中)如下。 Dataframe 拥有超过 10 年的数据(即包含超过 2000 天)。

enter image description here

解决方法

您提供的数据保存在 excel 中,但我会假设 pandas 可用来回答。作为示例数据,从 Yahoo Finance 获取数据并首先创建按年、月和日分组的前五个数据框。按日期对创建的数据框进行分组并找到最大值。将获得最大值的数据帧与原始数据帧合并。如果您正在寻找快速答案,则必须以文本形式发布数据并提供您正在处理的代码。

import pandas as pd
import yfinance as yf
df = yf.download("AAPL",interval='1m',start="2021-05-18",end="2021-05-25")
df.index = pd.to_datetime(df.index)
df.index = df.index.tz_localize(None)
df['date'] = df.index.date
# first 5 records by day
first_15min = df.groupby([df.index.year,df.index.month,df.index.day])['High'].head(15).to_frame()
# max value 
first_15min = first_15min.groupby([first_15min.index.date]).max()
df.merge(first_15min,left_on='date',right_on=first_15min.index,how='inner')

    Open    High_x  Low     Close   Adj Close   Volume  date    High_y
0   125.980003  126.099998  125.970001  126.065002  126.065002  0   2021-05-17  126.099998
1   126.060097  126.070000  125.900002  125.910004  125.910004  135988  2021-05-17  126.099998
2   125.900002  125.900002  125.790298  125.880096  125.880096  172001  2021-05-17  126.099998
3   125.889999  125.889999  125.790001  125.860001  125.860001  81338   2021-05-17  126.099998
4   125.870003  125.968201  125.870003  125.919998  125.919998  187059  2021-05-17  126.099998
...     ...     ...     ...     ...     ...     ...     ...     ...
1942    127.490097  127.557404  127.480003  127.540001  127.540001  161355  2021-05-24  126.419998
1943    127.540001  127.559998  127.480003  127.485001  127.485001  143420  2021-05-24  126.419998
1944    127.485001  127.529999  127.449997  127.480003  127.480003  132487  2021-05-24  126.419998
1945    127.479897  127.500000  127.449997  127.470001  127.470001  98478   2021-05-24  126.419998
1946    127.480003  127.550003  127.460098  127.532303  127.532303  128118  2021-05-24  126.419998

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...