2016-08-05 3 views
1

Я бы хотел рассчитать годовую производительность (как изменение рыночной стоимости) этих двух фирм, данные которых хранятся в приведенной ниже таблице данных.Вычислить возврат акций в 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]}) 

Я видел подобное решение с лямбда-функции, но до сих пор я не мог приспособить его к моим данным. У меня было решение, как это в виду, чтобы рассчитать производительность на основе года:

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 года, а не только соответствующей этой фирме.

Буду признателен за любую помощь!

+0

Независимо от вашей проблемы, в 'else' ветви' (df.mktvalue [(ДФ [ 'fyear'] == 2013)])/(df.mktvalue [(ДФ [ 'fyear'] == 2013)]) 'всегда будет возвращаться 1. Это то, что вы хотите? – IanS

ответ

0

это то, что вы хотите?

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 
+0

не совсем так, поскольку я хотел бы, чтобы процентные изменения изменялись только для AAPL в течение трех лет, а также процентное изменение только для GOOGL в течение трех лет. Поэтому для AAPL мне понадобится 0 (20/20-1), 0,25 (25/20-1), 0,2 (30/25-1) и для GOOGL 0 (50/50-1), 0,1 (55/50- 1), 0.09 (60/55-1) – DaveL

+0

@DaveL, пожалуйста, проверьте обновленный ответ – MaxU

+0

Это именно то, что я искал, большое вам спасибо! – DaveL

Смежные вопросы