Мой фрейм данных выглядит так:
Date AAPL NFLX INTC AAPL_Ret NFLX_Ret INTC_Ret
0 2008-01-31 27.834286 3.764286 25.350000
1 2008-02-29 27.847143 3.724286 24.670000 -0.07 0.25 -0.05
2 2008-03-31 25.721428 3.515714 22.670000 0.15 0.10 0.06
3 2008-04-30 25.377142 3.554286 22.879999 etc
4 2008-05-31 24.464285 3.328571 22.260000
Я хочу рассчитать квантили для доходности акций, проходящей через строки в моей df. Так, например, квантили (скажем, мы используем 3 группы) ранжируют первую строку возвратов как AAPL и INTC в квантиле 3, и NFLX в квантиле 1 (поскольку это самая высокая доходность). Ожидаемый результат будет (ниже, прокрутите вправо):
Date AAPL NFLX INTC AAPL_Ret NFLX_Ret INTC_Ret AAPL_Ret Q NFLX_Ret Q INTC Ret Q
0 2008-01-31 27.834286 3.764286 25.350000
1 2008-02-29 27.847143 3.724286 24.670000 -0.07 0.25 -0.05 3 1 3
2 2008-03-31 25.721428 3.515714 22.670000 0.15 0.10 0.06 1 2 2
3 2008-04-30 25.377142 3.554286 22.879999 etc
4 2008-05-31 24.464285 3.328571 22.260000
То, что я пробовал: я изначально хотел использовать pd.qcut с чем-то вроде axis = 1 в формуле, но метод не принимает такой аргумент. Поэтому я подумал, что мог бы сделать что-то вроде цикла for (поскольку в конечном итоге я расширю файл до множества акций)
for col in df.columns:
if '_Ret' in col:
df[col+'_Rank'] = df.apply(pd.qcut(df[col], 5, labels=np.arange(5, 0, -1), axis=1)
Но я застрял здесь.
Буду очень признателен за вашу помощь, я начинающий питон. Спасибо!