累计 max/min 基于单独列中的条件 pandas

Cumulative max/min based on criteria in separate column pandas

我想查看未来日期中是否有比当前价格更低的价格。我一次可以为一只股票做这件事(下面的 DIS 是我想要的样子),但是当我有两只股票时,我只能 return 价格较低的股票的最小值(DIS ).我需要每个分钟都与其库存相关。

data['min'] = data['current_price'].iloc[::-1].cummin()[::-1]

    Symbols Date    current_price   min
0   AMZN    2020-07-01  2,754.00    112.00
2   AMZN    2020-07-02  2,871.10    112.00
4   AMZN    2020-07-06  2,930.00    112.00
6   AMZN    2020-07-07  2,990.00    112.00
8   AMZN    2020-07-08  3,012.43    112.00
10  AMZN    2020-07-09  3,074.00    112.00
12  AMZN    2020-07-10  3,135.70    112.00
14  AMZN    2020-07-13  3,068.39    112.00
1   DIS     2020-07-01    112.29    112.00
3   DIS     2020-07-02    112.00    112.00
5   DIS     2020-07-06    112.90    112.61
7   DIS     2020-07-07    112.61    112.61
9   DIS     2020-07-08    112.81    112.81
11  DIS     2020-07-09    115.38    115.38
13  DIS     2020-07-10    116.21    115.89
15  DIS     2020-07-13    115.89    115.89

你快到了。只需添加 groupbyapply 您已经在 post:

中进行的相同转换
data['min'] = data.groupby('Symbols')['current_price'].apply(
    lambda x: x[::-1].cummin()[::-1])

print(data)

   Symbols        Date current_price       min
0     AMZN  2020-07-01      2,754.00  2,754.00
2     AMZN  2020-07-02      2,871.10  2,871.10
4     AMZN  2020-07-06      2,930.00  2,930.00
6     AMZN  2020-07-07      2,990.00  2,990.00
8     AMZN  2020-07-08      3,012.43  3,012.43
10    AMZN  2020-07-09      3,074.00  3,068.39
12    AMZN  2020-07-10      3,135.70  3,068.39
14    AMZN  2020-07-13      3,068.39  3,068.39
1      DIS  2020-07-01        112.29    112.00
3      DIS  2020-07-02        112.00    112.00
5      DIS  2020-07-06        112.90    112.61
7      DIS  2020-07-07        112.61    112.61
9      DIS  2020-07-08        112.81    112.81
11     DIS  2020-07-09        115.38    115.38
13     DIS  2020-07-10        116.21    115.89
15     DIS  2020-07-13        115.89    115.89
​```