Панды группируют несколько столбцов, как установлено, и сортируют по дополнительным столбцам.

1

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

  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 в качестве набора и ранжировать эти наборы в соответствии с самым высоким дивидендом (на основе столбца дивидендов).

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

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

Теги:
pandas
pandas-groupby
sorting

1 ответ

1
Лучший ответ

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

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)
  • 1
    Отличный материал, сработал в первый раз Я также добавил столбец для Div_Cvr_Avg и отсортировал по «Div_Grp_Avg», а затем «Div_Cvr_Avg».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню