【发布时间】:2020-09-11 01:26:06
【问题描述】:
我想知道在 pandas 数据帧中“高”大于当前高的第一个最小时间。
例如,我有一个包含以下列的数据框:
df["date"]
df["open"]
df["high"]
df["low"]
df["close"]
我想知道 HIGH 大于 Current high 的最小日期,这是我目前所拥有的:
import pandas as pd
import numpy as np
df = pd.read_csv("spy10mindata.csv")
df.columns = [x.lower() for x in df.columns]
df["date"] = pd.to_datetime(df['datetime'], dayfirst=True)
df = df.sort_values(["date"], ascending=[True])
df['just_date'] = df['date'].dt.date
df['just_date2'] = df['date'].dt.date
df['just_time'] = df['date'].dt.time
df["numdate"] = df['date'].dt.strftime("%Y%m%d").astype(int)
df["numtime"] = df['date'].dt.strftime("%H%M%S").astype(int)
df["try"] = np.where(df["high"] > df["high"))
""
但无法解决此分析的问题。如果您能帮上忙,我将不胜感激
【问题讨论】:
-
我能理解您想对“高”和当前高点做什么,您能否更详细地说明您想要的最短日期?
-
是的,谢谢您的宝贵时间。所以我想知道当Minimum Time (just time column) 哪里高> 比当前高。因此,假设上午 9:30:00 的最高价是每股 10 美元。我想知道它在当天第一次打破了当天的最高点。所以如果它是在上午 10:00:00,我希望该行说 10:00:00。如果这有意义的话。
-
在这种情况下,df['try'] 的其他值应该是什么?是否可以将它们一开始都设置为 0,并且每当当前高值 > 高时,该行获取新的时间戳,而对于当前高值从不 > 高的其他行,它们保持为 0?
-
对于这个特定的策略即时测试,我真的需要得到比当前行高更大的高点。我在想也许循环遍历当前行之后的所有行并获得大于当前高的第一行?这行得通吗?
-
如果您知道当前的高行数,则使用切片
[current_row+1:]获取current high之后的所有行,然后将这些行与单个值current high进行比较,而不是比较results = df[ df["high"][current_row+1:] > currnet_high ]然后你得到第一个值results[0]