我想得到前5天的最低收盘价(不包括当前仓位日),因此我有代码:
LClose5=pd.DataFrame()
LClose5['LClose5'] = stock_store['Close'].rolling(window=5).min()结果不是我想要的,如果目前的仓位日收盘价是最低的,它会选择它作为最近5天的最低价格。这是错误的。
我真正想要的是比较一下“当前收盘价”和“前5天最低价格”。
对不起,我试着使它尽可能简单。
发布于 2020-07-30 20:07:59
只需使用shift将所有值向下移动1行:
LClose5['LClose5'] = stock_store['Close'].rolling(window=5).min().shift(1)
下面是一个玩具示例,其中第6项(1)低于前5行。LClose5列中的第一个条目(第6行)为4,因为这是上面5行中的最小项:
import pandas as pd
df = pd.DataFrame({"close": [10, 9, 4, 5, 7, 1, 5, 6, 2]})
df["LClose5"] = df["close"].rolling(window=5).min().shift(1)输出结果如下:
close LClose5
10 NaN
9 NaN
4 NaN
5 NaN
7 NaN
1 4.0
5 1.0
6 1.0
2 1.0https://stackoverflow.com/questions/63180423
复制相似问题