熊猫获得不同范围的最小值和最大值

问题描述 投票:0回答:1

我有以下表格作为 df。

Price   Stop    Max Min
15       15     
5           
35          
85          
67       67     
75          
54          
17          
75       75     
52          
75          
75       75     
53          
15       15     
58          
71          
95          
45          
77       77     
65          
25          
48          
15       15     
45          

在针对止损值的最大列中,我希望在直到下一个止损值的范围内获得价格的最大值,并且对于最小列中的最小值也具有相同的值。 例如。针对 15,我需要 15 到 67 范围内的最大值和最小值。即相应列中的最大值为 85,最小值为 5。

我可以获得整个列的最小值和最大值,但不能获得连续变化的范围。

pandas max min
1个回答
0
投票

IIUC,计算掩码,然后执行

groupby.agg
并分配:

m = df['Stop'].notna()

df.loc[m, ['Max', 'Min']] = (df.groupby(m.cumsum())['Price']
                               .agg(['max', 'min']).values
                            )

输出:

    Price  Stop   Max   Min
0      15  15.0  85.0   5.0
1       5   NaN   NaN   NaN
2      35   NaN   NaN   NaN
3      85   NaN   NaN   NaN
4      67  67.0  75.0  17.0
5      75   NaN   NaN   NaN
6      54   NaN   NaN   NaN
7      17   NaN   NaN   NaN
8      75  75.0  75.0  52.0
9      52   NaN   NaN   NaN
10     75   NaN   NaN   NaN
11     75  75.0  75.0  53.0
12     53   NaN   NaN   NaN
13     15  15.0  95.0  15.0
14     58   NaN   NaN   NaN
15     71   NaN   NaN   NaN
16     95   NaN   NaN   NaN
17     45   NaN   NaN   NaN
18     77  77.0  77.0  25.0
19     65   NaN   NaN   NaN
20     25   NaN   NaN   NaN
21     48   NaN   NaN   NaN
22     15  15.0  45.0  15.0
23     45   NaN   NaN   NaN
© www.soinside.com 2019 - 2024. All rights reserved.