ich möchte den gleitenden Durchschnittspreis (GLD) eines DataFrame berechnen, tue mich aber etwas schwer damit. Definiert ist der GLD:
Code: Alles auswählen
(x_alt * y_alt + x_neu * y_neu) / (x_alt + x_neu)
Code: Alles auswählen
df = pd.DataFrame({'A': [3, 6, 4, 9, -2, 12], 'B': [12, 29, 27, 15, 34, 29]})
Code: Alles auswählen
>>> df['GM'] = df['B'].rolling(2).mean()
>>> print(df)
A B GM
0 3 12 NaN
1 6 29 20.5
2 4 27 28.0
3 9 15 21.0
4 -2 34 24.5
5 12 29 31.5
Code: Alles auswählen
>>> df['GWM'] = sum(df['B'] * df['A']) / sum(df['A'])
>>> print(df)
A B GM GWM
0 3 12 NaN 22.90625
1 6 29 20.5 22.90625
2 4 27 28.0 22.90625
3 9 15 21.0 22.90625
4 -2 34 24.5 22.90625
5 12 29 31.5 22.90625
Ich habe schon über pandas.DataFrame.apply() und .agg() sowie .expanding() gelesen, aber ich stehe auf dem Schlauch.
Das Ergebnis soll so aussehen:
Code: Alles auswählen
A B GLD
0 3 12 12.00
1 6 29 23.33
2 4 27 24.47
3 9 15 20.59
4 -2 34 20.59
5 12 29 23.74
Hat jemand eine Idee, wo ich weiterschauen sollte?