Ich möchte die jährliche Performance (als Marktwertänderung) dieser beiden Firmen, deren Daten im folgenden Datenrahmen gespeichert sind, berechnen.Berechnen Sie Aktienrenditen in Pandas DataFrame
df = pd.DataFrame({'tic' : ['AAPL', 'AAPL', 'AAPL', 'GOOGL','GOOGL','GOOGL'],
'mktvalue' : [20,25,30,50,55,60],
'fyear' : [2014,2015,2016,2014,2015,2016]})
Ich habe eine ähnliche mit Lösung, die eine Lambda-Funktion gesehen, aber bis jetzt konnte ich passen sie nicht auf meine Daten. Ich hatte eine Lösung wie diese in Anbetracht der Leistung zu berechnen auf das Jahr:
df['performance'] = df.fyear.apply(lambda x: (df.mktvalue[(df['fyear'] == 2014)])/
(df.mktvalue[(df['fyear'] == 2013)]) if x == 2014
else (df.mktvalue[(df['fyear'] == 2013)])/
(df.mktvalue[(df['fyear'] == 2013)])
Eines meiner größten Probleme war, dass bei der Umsetzung beim Aufruf
(df.mktvalue[(df['fyear'] == 2013)])
ich alle Marktwerte erhalten von 2013 anstelle von nur dem entsprechenden zu dieser Firma.
Ich würde jede Hilfe zu schätzen wissen!
Unabhängig von Ihrem Problem, in dem 'else' Zweig,' (df.mktvalue [(df [ 'GJAHR'] == 2013)])/(df.mktvalue [(df [ 'GJAHR'] == 2013)]) 'wird immer zurückkehren 1. Ist das was du willst? – IanS