2 回答

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
我認(rèn)為你需要DataFrame.copy:
df = df[pd.notnull(df['delta_current_day'])].copy()
#df = df.loc[pd.notnull(df['delta_current_day'])] #or this
df['delta_next_day'] = df['delta_current_day'].shift(-1)
這是一片:
df = df[pd.notnull(df['delta_current_day'])]
A ( df['delta_current_day'].shift(-1)) 值正試圖在df[pd.notnull(df['delta_current_day'])]DataFrame 中切片的 ( ) 副本上設(shè)置

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
你也可以試試這個(gè):
# Sample data.
df = pd.DataFrame({
'open': [100, 102, np.nan, 102],
'close': [101.5, 102.5, np.nan, 104]
})
def get_delta(df):
df = df.dropna().assign(delta_current_day=df.eval('close - open'))
return df.assign(delta_next_day=df['delta_current_day'].shift(-1))
>>> get_delta(df)
open close delta_current_day delta_next_day
0 100.0 101.5 1.5 0.5
1 102.0 102.5 0.5 2.0
3 102.0 104.0 2.0 NaN
當(dāng)然,這會引入前瞻偏差。為什么你今天使用明天的 delta?
添加回答
舉報(bào)