找到最大值后,在单独的列中找到后续的最小值

白板编码器

在我的数据框中,我有这些列。

日期时间-(5 分钟时间段 7:00、7:05、7:10 等......)高低

我想要做的是在“高”列中找到最大值,然后在继续它的“低”列中找到最小值。

采取这种差异,基本上是高低,并将其传递给一个新的专栏,上面说

“如果 'High'.max 在 7:20 行而低价在 7:50 行,有什么区别,并将该差异放在 7:20 旁边的行上”

在所有这一切结束时,我想按“时间”获得所有“高”-“低”差异的平均值或中位数

例如(来自大型数据帧)

           Date   Time   Ticker     High      Low    Range
0      01/02/18   7:05  USD/JPY  112.170  112.150
1      01/02/18   7:10  USD/JPY  112.175  112.140
2      01/02/18   7:15  USD/JPY  112.185  112.170
3      01/02/18   7:20  USD/JPY  112.180  112.155   112.180-112.080 = .10
4      01/02/18   7:25  USD/JPY  112.160  112.145
5      01/02/18   7:30  USD/JPY  112.160  112.155
6      01/02/18   7:35  USD/JPY  112.160  112.120
7      01/02/18   7:40  USD/JPY  112.145  112.100
8      01/02/18   7:45  USD/JPY  112.120  112.085
9      01/02/18   7:50  USD/JPY  112.155  112.080
10     01/02/18   7:55  USD/JPY  112.150  112.130
32898  07/05/19  11:35  USD/JPY  108.545  108.525
32899  07/05/19  11:40  USD/JPY  108.550  108.535
32900  07/05/19  11:45  USD/JPY  108.560  108.530   108.560-108.525 = .035
32901  07/05/19  11:50  USD/JPY  108.550  108.540
32902  07/05/19  11:55  USD/JPY  108.535  108.525
32903  07/05/19  12:00  USD/JPY  108.550  108.530
32904  07/05/19  12:05  USD/JPY  108.555  108.530
32905  07/05/19  12:10  USD/JPY  108.560  108.540
32906  07/05/19  12:15  USD/JPY  108.560  108.540

期望输出

Time    Range (median or avg for all of the instances where the Max High was 7:20 ect)
7:20    .10
11:45   .035

我是否使用 Lamdba 来确保在每天找到 High.max 后只找到 Low.min?

我知道我可以按“日期”分组并找到每个日期的最大值。

#High grouped by Date
df2 = df.loc[df.groupby('Date')['High'].idxmax()]

我可以找到范围,但需要在找到 High.max 之后的范围,然后找到每个日期的 Low.min,然后按时间。

#Difference between High and Low
range = (df['High']-df['Low'])

但是我不知道如何在找到最大值并将该差异返回到最大时间发生的位置后找到最小值

斯特夫

要获得最大值之后的最小值,您可以过滤 groupby 组中的行:

df.groupby('Date').apply(lambda x: x.High.max() - x[x.index > x.High.idxmax()].Low.min())

结果:

Date
01/02/18    0.105
07/05/19    0.035

为了验证这是否正常工作,您必须将例如第一行的低设置为 112.000,即使当天的绝对最小值出现在最大值之前。


如果您也需要时间信息,请将其转换为数据框并插入时间列:

res = df.groupby('Date').apply(lambda x: x.High.max() - x[x.index > x.High.idxmax()].Low.min()).to_frame('Range')
res.insert(0,'Time',df.loc[df.groupby('Date')['High'].idxmax(),'Time'].values)

最后结果:

           Time  Range
Date                  
01/02/18   7:15  0.105
07/05/19  11:45  0.035


更新
如果您想将范围作为新列插入原始数据框中:

df.loc[df.groupby('Date')['High'].idxmax().values,'Range']=df.groupby('Date').apply(lambda x: x.High.max() - x[x.index > x.High.idxmax()].Low.min()).values

输出:

           Date   Time   Ticker     High      Low  Range
0      01/02/18   7:05  USD/JPY  112.170  112.000    NaN
1      01/02/18   7:10  USD/JPY  112.175  112.140    NaN
2      01/02/18   7:15  USD/JPY  112.185  112.170  0.105
3      01/02/18   7:20  USD/JPY  112.180  112.155    NaN
4      01/02/18   7:25  USD/JPY  112.160  112.145    NaN
5      01/02/18   7:30  USD/JPY  112.160  112.155    NaN
6      01/02/18   7:35  USD/JPY  112.160  112.120    NaN
7      01/02/18   7:40  USD/JPY  112.145  112.100    NaN
8      01/02/18   7:45  USD/JPY  112.120  112.085    NaN
9      01/02/18   7:50  USD/JPY  112.155  112.080    NaN
10     01/02/18   7:55  USD/JPY  112.150  112.130    NaN
32898  07/05/19  11:35  USD/JPY  108.545  108.525    NaN
32899  07/05/19  11:40  USD/JPY  108.550  108.535    NaN
32900  07/05/19  11:45  USD/JPY  108.560  108.530  0.035
32901  07/05/19  11:50  USD/JPY  108.550  108.540    NaN
32902  07/05/19  11:55  USD/JPY  108.535  108.525    NaN
32903  07/05/19  12:00  USD/JPY  108.550  108.530    NaN
32904  07/05/19  12:05  USD/JPY  108.555  108.530    NaN
32905  07/05/19  12:10  USD/JPY  108.560  108.540    NaN
32906  07/05/19  12:15  USD/JPY  108.560  108.540    NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在多维字典中找到最大值,最小值

来自分类Dev

在与另一列对应的列中找到最大值和最小值

来自分类Dev

在一对列中找到最大值/最小值

来自分类Dev

awk:在列中找到最小值和最大值

来自分类Dev

在两列中找到最小值和最大值

来自分类Dev

MySQL如何在求和一列后找到最大值和最小值

来自分类Dev

如何从 R 中跨多个数据帧的公共列中找到最大值/最小值

来自分类Dev

在R中找到列的最小值

来自分类Dev

在数组中找到最小值和最大值时出现Stackoverflow错误?

来自分类Dev

在金属纹理中找到最小值和最大值

来自分类Dev

如何从掷骰子中找到最小值和最大值?

来自分类Dev

使用awk或shell脚本在局部极值中找到全局最小值/最大值

来自分类Dev

如何在列表中找到所有局部最大值和最小值

来自分类Dev

如何在Python列表中找到最小值或最大值

来自分类Dev

如何通过has_many关系从最大值中找到最小值

来自分类Dev

Masm32。在数组中找到最小值和最大值

来自分类Dev

如何在r的数据框中找到数字wrt的最大值和最小值?

来自分类Dev

如何在 SML 中找到树的最小值和最大值

来自分类Dev

如何在while循环中找到最大值和最小值 - c

来自分类Dev

如何在python中找到掷骰子程序的最小值和最大值

来自分类Dev

如何在十进制列表中找到最小值和最大值?

来自分类Dev

如何从列中找到最大值

来自分类Dev

找到每列的最大值和最小值,然后找到每一行的最大值和最小值

来自分类Dev

按 3 列分组并根据第 4 列找到最大值/最小值?

来自分类Dev

如何找到数据帧或矩阵的最小值/最大值的位置(行/列)(R问题)

来自分类Dev

找到第3列的最小值和最大值,然后打印整行

来自分类Dev

如何找到与列的最小值/最大值相关联的行?

来自分类Dev

在与另一列中的特定ID相关联的一列中找到最小值和最大值

来自分类Dev

如何在numpy中的3d数组中找到最小值和最大值,并将结果分组?

Related 相关文章

  1. 1

    在多维字典中找到最大值,最小值

  2. 2

    在与另一列对应的列中找到最大值和最小值

  3. 3

    在一对列中找到最大值/最小值

  4. 4

    awk:在列中找到最小值和最大值

  5. 5

    在两列中找到最小值和最大值

  6. 6

    MySQL如何在求和一列后找到最大值和最小值

  7. 7

    如何从 R 中跨多个数据帧的公共列中找到最大值/最小值

  8. 8

    在R中找到列的最小值

  9. 9

    在数组中找到最小值和最大值时出现Stackoverflow错误?

  10. 10

    在金属纹理中找到最小值和最大值

  11. 11

    如何从掷骰子中找到最小值和最大值?

  12. 12

    使用awk或shell脚本在局部极值中找到全局最小值/最大值

  13. 13

    如何在列表中找到所有局部最大值和最小值

  14. 14

    如何在Python列表中找到最小值或最大值

  15. 15

    如何通过has_many关系从最大值中找到最小值

  16. 16

    Masm32。在数组中找到最小值和最大值

  17. 17

    如何在r的数据框中找到数字wrt的最大值和最小值?

  18. 18

    如何在 SML 中找到树的最小值和最大值

  19. 19

    如何在while循环中找到最大值和最小值 - c

  20. 20

    如何在python中找到掷骰子程序的最小值和最大值

  21. 21

    如何在十进制列表中找到最小值和最大值?

  22. 22

    如何从列中找到最大值

  23. 23

    找到每列的最大值和最小值,然后找到每一行的最大值和最小值

  24. 24

    按 3 列分组并根据第 4 列找到最大值/最小值?

  25. 25

    如何找到数据帧或矩阵的最小值/最大值的位置(行/列)(R问题)

  26. 26

    找到第3列的最小值和最大值,然后打印整行

  27. 27

    如何找到与列的最小值/最大值相关联的行?

  28. 28

    在与另一列中的特定ID相关联的一列中找到最小值和最大值

  29. 29

    如何在numpy中的3d数组中找到最小值和最大值,并将结果分组?

热门标签

归档