Python Pandas从第二行开始计算



我想跳过第一行(第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

最新更新