如何解决如何在数据透视表上应用百分位排名?
如何在数据透视表上应用百分位排名?
虚拟数据集
import pandas as pd
df = pd.DataFrame({"Business": ["Hotel","Hotel","Transport","Agri","Tele","Tele"],"Location": ["101","101","103",'105','102','103','106'],"Area" : ['A','A','B','C','D','F']})
activity_cat_countby_subarea = df.groupby(['Area','Location','Business']).size().reset_index(name='counts')
activity_cat_countby_subarea = activity_cat_countby_subarea.reset_index().sort_values(['counts'],ascending=False)
在此处转换为数据透视表后,我将在总体计数级别上应用排名。
activity_cat_countby_subarea['overll_pct_rank'] = activity_cat_countby_subarea['counts'].rank(pct=True)
但我的要求是,我需要根据每个业务计数应用排名。即我需要找到每个企业的排名,即“酒店”及其数量。
如果您需要更多信息,请帮助让我知道
解决方法
而不是这样做:
activity_cat_countby_subarea['overll_pct_rank'] = activity_cat_countby_subarea['counts'].rank(pct=True)
这样做:
activity_cat_countby_subarea['overll_pct_rank']=activity_cat_countby_subarea.groupby(['Business','counts']).rank(pct=True)
activity_cat_countby_subarea.sort_index(inplace=True)
#Output
index Area Location Business counts overll_pct_rank
0 0 A 101 Agri 1 0.5
1 1 A 101 Hotel 2 1.0
2 2 A 101 Transport 1 0.5
3 3 B 103 Agri 1 1.0
4 4 B 103 Tele 1 0.5
5 5 C 105 Hotel 1 1.0
6 6 D 102 Transport 1 1.0
7 7 F 106 Tele 1 1.0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。