[FIXED] Python-Pandas beginnen mit der Berechnung ab der zweiten Reihe

Ausgabe

Ich möchte die erste Zeile (Zeile 0) überspringen, die den Wert ‘100’ in ‘index_100’ enthält, und mit der Berechnung ab Zeile 1 beginnen. Meine Berechnung verwendet die erste Zeile.

Wenn ich ab der zweiten Reihe beginnen kann, wäre dies meine Funktion:

df['index_100'] = ((df['index_100']).shift(1))*(df['close'])/(df['prev_close'])

Mein DF ist so:

      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

Erwartetes Ergebnis:

      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

Lösung

Etwas wie:

df['index_100'] = df['index_100'].mul(df['close']).div(df['close'].shift().bfill())

Ausgang:

    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


Beantwortet von –
mozway


Antwort geprüft von –
Robin (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like