我正在處理時間序列模型的滯后。我想自動創建滯后,我已經為訓練集做過。
for i in range(1,n 1):
column_name = 'lag_q{}'.format(i)
df_train[column_name]=df_train.groupby(by = ['strain','sex','genotype'],
dropna= False)['quantity'].shift(i)
但是,對于驗證集,我只希望第一個值是實際數量,其余的值使用預測。因此,我需要填寫驗證 df 并留下稍后將填充預測的空格。
這些是我想要填充的行之前的行的數量值。
| 數量 |
|---|
| 26450 |
| 24707 |
| 25369 |
| 25193 |
| 27250 |
這個df將是我想要回來的那個
| lag_q1 | lag_q2 | lag_q3 | lag_q4 | lag_q5 |
|---|---|---|---|---|
| 27250 | 25193 | 25369 | 24707 | 26450 |
| 27250 | 25193 | 25369 | 24707 | |
| 27250 | 25193 | 25369 | ||
| 27250 | 25193 | |||
| 27250 |
我正在嘗試一些 for 回圈,但我只設法填充了第一行
for i in range(1,n 1):
column_name = 'lag_q{}'.format(i)
lags_cols.append(column_name)
df_val[column_name] = ''
df_val.loc[0,column_name] = df_train.iloc[-i]['quantity']
uj5u.com熱心網友回復:
你可以使用標簽:numpy:
N = len(df)
q = df['quantity'].to_numpy()
a = np.arange(N)
out = pd.DataFrame(np.triu(q[np.triu(a[:, None]-a-1)]),
columns=[f'lag_q{i 1}' for i in range(N)])
輸出:
lag_q1 lag_q2 lag_q3 lag_q4 lag_q5
0 27250 25193 25369 24707 26450
1 0 27250 25193 25369 24707
2 0 0 27250 25193 25369
3 0 0 0 27250 25193
4 0 0 0 0 27250
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/515937.html
