I would like to calculate the annual performance (as change in market value) of these two firms whose data is stored in the dataframe below.
df = pd.DataFrame({'tic' : ['AAPL', 'AAPL', 'AAPL', 'GOOGL','GOOGL','GOOGL'],
'mktvalue' : [20,25,30,50,55,60],
'fyear' : [2014,2015,2016,2014,2015,2016]})
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)])
(df.mktvalue[(df['fyear'] == 2013)])
is that what you want?
In [129]: df['performance'] = df.groupby('tic').mktvalue.pct_change().fillna(0)
In [130]: df
Out[130]:
fyear mktvalue tic performance
0 2014 20 AAPL 0.000000
1 2015 25 AAPL 0.250000
2 2016 30 AAPL 0.200000
3 2014 50 GOOGL 0.000000
4 2015 55 GOOGL 0.100000
5 2016 60 GOOGL 0.090909