Панды группируют несколько столбцов как установленные и сортируют по дополнительным столбцам - PullRequest
0 голосов
/ 23 июня 2018

У меня есть фрейм данных с данными, отформатированными следующим образом:

  Exchange Ticker                        Name  Year  Dividend_Cover_Ratio Dividend Net_Return        
0     NYSE     VZ  VERIZON COMMUNICATIONS INC  2013                  1.93     5.2%     41.69%             
1     NYSE     VZ  VERIZON COMMUNICATIONS INC  2014                  1.13    5.38%     14.79%             
2     NYSE     VZ  VERIZON COMMUNICATIONS INC  2015                  1.59    6.62%     24.74%             
3     NYSE     VZ  VERIZON COMMUNICATIONS INC  2016                  1.42    4.51%      28.7%            
4     NYSE     VZ  VERIZON COMMUNICATIONS INC  2017                  3.18    4.43%     -1.81%  
50    NYSE    MCD              MCDONALDS CORP  2013                  1.79    3.66%     33.83%             
51    NYSE    MCD              MCDONALDS CORP  2014                  1.48    3.85%     14.03%            
52    NYSE    MCD              MCDONALDS CORP  2015                  1.40     3.1%     51.36%            
53    NYSE    MCD              MCDONALDS CORP  2016                  1.52    3.06%     11.34%            
54    NYSE    MCD              MCDONALDS CORP  2017                  1.68    2.24%     39.44%    

Я бы хотел рассматривать Exchange, Ticker, Year как набор и ранжировать эти наборы в соответствии с наибольшим дивидендом (на основе столбца дивидендов).

Я думаю, что мне, возможно, придется усреднить столбец дивидендов (за набор), затем ранг (индекс?) На основе среднего значения, а затем отбросить средний столбец (я не хочу этого видеть).

Может кто-нибудь предложить какой-нибудь код, который бы этого достиг? Я просмотрел другие посты, но у меня ничего не получалось (из-за группировки нескольких столбцов, которые я подозреваю).

1 Ответ

0 голосов
/ 23 июня 2018

Сначала добавьте ряд средних дивидендов по группам:

df['Div_Grp_Avg'] = df.groupby(['Exchange', 'Ticker', 'Year'])['Dividend'].transform('mean')

Затем сортируйте по этой новой серии:

df = df.sort_values('Div_Grp_Avg', ascending=False)

Наконец, опустите вспомогательный столбец:

df = df.drop('Div_Grp_Avg', 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...