有没有办法对Pandas中的3列进行加权排序?

2024-05-16 13:53:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三列,我想根据一定的权重进行排名。下面是我正在使用的数据帧的一个示例:

Sales Revenue             Product Count           Average Sales/Product
1005650                   30                      33521.67
100223                    5                       20044.60
72233                     2                       36116.50
1005657                   13                      77358.23
1002233                   25                      40089.32

我想创建一个排名,例如,平均销售额/产品的权重为45%,销售收入的权重为35%,产品数量的权重为20%。我知道,在熊猫中,这可以做到:

col1 = sales["Sales Revenue"].astype(str)
col2 = sales["Average Sales/Product"].astype(str) 
col3 = sales["Product Count"].astype(str)

sales['Rank'] = (col2+col1+col3).astype('int64').rank(method='dense', ascending=False).astype(int64)
sales = sales.sort_values('Rank')

但我不明白这个方法是如何工作的,因为它确实有排名,但它背后的逻辑我似乎无法理解。是否有一种方法可以创建一个基于百分比权重的排名系统,该系统能够创建一个更加强调平均销售额/产品、然后是销售收入、然后是产品数量的排名


Tags: 产品countproductcol2col1权重averagesales