【问题标题】:How to find min value between several max values in a single column?如何在单个列中找到几个最大值之间的最小值?
【发布时间】:2019-11-22 13:30:28
【问题描述】:

编辑:请看这个问题的结尾。进行了修改。

我需要在单个列中找到每两个最大值之间的最小值。 最大值的最小值应大于 10。

示例如下:

Price Vol.
95    7
90    13
85    19
80    16
75    12
70    5
65    8
60    15
55    22
50    35
45    20
40    8
35    3
30    6
25    11
20    20
15    25
10    16
5     8

我想知道我怎么会变成这样:

Price Vol. Result
85    19    max
70    5     min
50    35    max
35    3     min
15    25    max

这里有更多解释

编辑1: 在 Quang Hoang 正确回答之后,我注意到我的样本看起来太好了(我的意思是不现实)。

这是新的更真实的示例:

Price Vol.
30    7
29    13
28    19
27    18
26    21
25    5
24    8
23    15
22    22
21    29
20    20
21    26
20    28
19    25
18    11
17    15
16    11
15    7
14    3
13    12
12    18
11    33
10    25

我想知道我怎么会变成这样:

Price Vol. Result
26    21   max
25    5    min
21    29   max
14    3    min
11    33   max

如您所见,我需要识别大于 10 的值范围,然后在该范围内找到一个最大值,最后在这些已识别的最大值之间找到一个最小值。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    对于您的数据,您可以通过与邻居比较来屏蔽 maxmin

    diff = df['Vol.'].diff()
    is_max = diff.gt(0) & diff.shift(-1).lt(0)
    is_min = diff.shift().lt(0) & diff.gt(0)
    
    df['Result'] = np.select([is_max, is_min], ['max', 'min'])
    
    df[df['Result'].ne('0')]
    

    输出:

        Price  Vol. Result
    2      85    19    max
    6      65     8    min
    9      50    35    max
    13     30     6    min
    16     15    25    max
    

    【讨论】:

    • 感谢您的回答。您的回答确实有道理并且是正确的,但恐怕我错误地提供了示例数据。我在下面编辑了我的问题。请你看一下好吗?顺便说一句,我是 Stackoverflow 的新手,我不知道应该如何正确编辑我的问题。我应该编辑原始问题还是仅在原始问题下方进行新的编辑?提前谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 2021-05-11
    • 2019-04-25
    • 2015-03-28
    • 2012-03-20
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多