Python 熊猫将多个列分组为集合,并对其他列进行排序
我有一个数据框,数据格式如下:Python 熊猫将多个列分组为集合,并对其他列进行排序,python,pandas,sorting,pandas-groupby,Python,Pandas,Sorting,Pandas Groupby,我有一个数据框,数据格式如下: 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 VERIZO
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%
我想将交易所、股票交易所、年份作为一个集合,并根据最高股息(基于股息列)对这些集合进行排序
我在想,我可能必须平均股息列(每套),然后根据平均值排名(索引?),然后删除平均列(我不想看到这个)
有人能推荐一些代码来实现这一点吗?我看过其他的帖子,但没有一篇对我有用(因为我怀疑有多个专栏) 首先按组添加平均股息系列:
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)
旁注:
set
此处的术语不正确,您需要分组。这可能就是你在别处找不到解决方案的原因。很棒的东西,第一次就成功了。我还为Div_Cvr_Avg添加了一列,并按“Div_Grp_Avg”和“Div_Cvr_Avg”排序。