墨色風(fēng)雨
2023-04-18 16:32:46
我想獲得前 5 天的最低收盤價(jià)(不包括當(dāng)前持倉(cāng)日),因此我有代碼:LClose5=pd.DataFrame()
LClose5['LClose5'] = stock_store['Close'].rolling(window=5).min()結(jié)果不是我想要的,如果當(dāng)前持倉(cāng)日收盤價(jià)是最低的,它會(huì)選擇它作為最近5天的最低價(jià)。這是不正確的。我真正想要的是比較“當(dāng)前收盤價(jià)”與“前 5 天最低價(jià)”對(duì)不起,我盡量讓它盡可能簡(jiǎn)單。
1 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
只需使用shift將所有值向下移動(dòng) 1 行:
LClose5['LClose5'] = stock_store['Close'].rolling(window=5).min().shift(1)
這是一個(gè)玩具示例,其中第 6 個(gè)條目 (1) 低于前 5 行。列中的第一個(gè)條目LClose5(第 6 行)將為 4,因?yàn)檫@是上面 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.0
添加回答
舉報(bào)
0/150
提交
取消