我想计算这两家公司的年度业绩(作为市场价值的变化),这两家公司的数据存储在下面的数据框中。计算大熊猫的股票收益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]})
我已经看到类似的解决方案lambda函数,但直到现在我无法适应它我的数据。我想到这样一个解决方案来计算基于年度业绩:
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)])
我收到的所有市场价值时,在执行2013年,而不是只有相应的这家公司。
我将不胜感激任何帮助!
不管你的问题的,在'else'分支,'(df.mktvalue [(DF [ 'fyear'] == 2013)])/(df.mktvalue [(DF [ 'fyear'] == 2013)])'将始终返回1.是你想要的吗? – IanS