我想跳过第一行(第0行(,该行包含"index_100"中的"100"值,并从第1行开始计算。我的计算使用了第一行。
如果我可以从第二行开始,这将是我的功能:
df['index_100'] = ((df['index_100']).shift(1))*(df['close'])/(df['prev_close'])
我的df是这样的:
symbol timestamp close index_100 prev_close
0 BTCUSDT 1665187200000 19537.11 100 NaN
1 BTCUSDT 1665187500000 19559.57 100 19537.11
2 BTCUSDT 1665187800000 19561.30 100 19559.57
3 BTCUSDT 1665188100000 19568.50 100 19561.30
4 BTCUSDT 1665188400000 19608.70 100 19568.50
5 BTCUSDT 1665188700000 19593.45 100 19608.70
预期结果:
symbol timestamp close index_100 prev_close
0 BTCUSDT 1665187200000 19537.11 100 NaN
1 BTCUSDT 1665187500000 19559.57 100.1149607081 19537.11
2 BTCUSDT 1665187800000 19561.30 100.1238156513100 19559.57
3 BTCUSDT 1665188100000 19568.50 100.1606685943 19561.30
4 BTCUSDT 1665188400000 19608.70 100.366430859 19568.50
5 BTCUSDT 1665188700000 19593.45 100.2883742785 19608.70
类似于:
df['index_100'] = df['index_100'].mul(df['close']).div(df['close'].shift().bfill())
输出:
symbol timestamp close index_100 prev_close
0 BTCUSDT 1665187200000 19537.11 100.000000 NaN
1 BTCUSDT 1665187500000 19559.57 100.114961 19537.11
2 BTCUSDT 1665187800000 19561.30 100.008845 19559.57
3 BTCUSDT 1665188100000 19568.50 100.036807 19561.30
4 BTCUSDT 1665188400000 19608.70 100.205432 19568.50
5 BTCUSDT 1665188700000 19593.45 99.922228 19608.70