根据最高值从 pandas 数据框中提取最低值
Extract lowest values from pandas dataframe based on the highest value
我从财务部门 API 获得数据,如下所示:
工业 |高开低收
0 | 2.04 2.04 2.04 2.04
1 | 2.06 2.10 2.06 2.10
2 | 2.10 2.11 2.10 2.11
3 | 2.12 2.12 2.10 2.10
4 | 2.06 2.06 2.06 2.06
我的问题:
每行代表 1 分钟。确定最高值后,如何提取最高值之前的最低值和最高值之后的最低值?我想创建两个新列并将这两个值添加到第 0 行。
我的解决方法在pandas中不起作用:
我来自 excel/VBA 背景。在 VBA 中,我会告诉 Excel 从最高值创建一个变量,然后逐行向下比较该行中的“高”值。如果该行的“高”值不等于变量,Excel 将获取该行中的最低值并将其转储到数组中。我会告诉 Excel 继续将“低”值转储到数组中,直到行中的“高”值与变量匹配。然后我从数组中提取最低值,这就是我如何获得“低先于高”值。
但是,我很难在 pandas 数据框中“移动”。你能帮我一下吗?
假设您的数据框按顺序编入索引(0、1、2、3、...):
idxmax = df['close'].idxmax()
max_value = df.loc[idxmax, 'close']
lowest_before = df.loc[:idxmax-1, 'close'].min()
highest_after = df.loc[idxmax+1:, 'close'].max()
我从财务部门 API 获得数据,如下所示:
工业 |高开低收
0 | 2.04 2.04 2.04 2.04
1 | 2.06 2.10 2.06 2.10
2 | 2.10 2.11 2.10 2.11
3 | 2.12 2.12 2.10 2.10
4 | 2.06 2.06 2.06 2.06
我的问题: 每行代表 1 分钟。确定最高值后,如何提取最高值之前的最低值和最高值之后的最低值?我想创建两个新列并将这两个值添加到第 0 行。
我的解决方法在pandas中不起作用: 我来自 excel/VBA 背景。在 VBA 中,我会告诉 Excel 从最高值创建一个变量,然后逐行向下比较该行中的“高”值。如果该行的“高”值不等于变量,Excel 将获取该行中的最低值并将其转储到数组中。我会告诉 Excel 继续将“低”值转储到数组中,直到行中的“高”值与变量匹配。然后我从数组中提取最低值,这就是我如何获得“低先于高”值。
但是,我很难在 pandas 数据框中“移动”。你能帮我一下吗?
假设您的数据框按顺序编入索引(0、1、2、3、...):
idxmax = df['close'].idxmax()
max_value = df.loc[idxmax, 'close']
lowest_before = df.loc[:idxmax-1, 'close'].min()
highest_after = df.loc[idxmax+1:, 'close'].max()