编辑:请查看此问题的结尾。进行编辑。
我需要在单列中找到每两个最大值之间的最小值。 最大值中的最小值应大于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的值的范围,然后在该范围内找到一个最大值,最后找到那些标识的最大值之间的最小值。
答案 0 :(得分:1)
对于您的数据,您可以通过与邻居进行比较来屏蔽max
和min
:
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