微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在数据透视表上应用百分位排名?

如何解决如何在数据透视表上应用百分位排名?

如何在数据透视表上应用百分位排名?

虚拟数据集

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']})

enter image description here

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)

enter image description here

在此处转换为数据透视表后,我将在总体计数级别上应用排名。

activity_cat_countby_subarea['overll_pct_rank'] = activity_cat_countby_subarea['counts'].rank(pct=True)

enter image description here

但我的要求是,我需要根据每个业务计数应用排名。即我需要找到每个企业的排名,即“酒店”及其数量

如果您需要更多信息,请帮助让我知道

解决方法

而不是这样做:

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 举报,一经查实,本站将立刻删除。