python – Pandas按多列排名

python – Pandas按多列排名,第1张

概述我试图根据两列对大熊猫数据框进行排名. 我可以根据一列对其进行排名,但如何根据两列对其进行排名? ‘SaleCount’,然后’TotalRevenue’? import pandas as pddf = pd.DataFrame({'TotalRevenue':[300,9000,1000,750,500,2000,0,600,50,500], 'Date':['2016-12-02 我试图根据两列对大熊猫数据框进行排名.
我可以根据一列对其进行排名,但如何根据两列对其进行排名? ‘SaleCount’,然后’TotalRevenue’?

import pandas as pddf = pd.DataFrame({'TotalRevenue':[300,9000,1000,750,500,2000,600,50,500],'Date':['2016-12-02' for i in range(10)],'SaleCount':[10,100,30,35,20,2,20],'shops':['S3','S2','S1','S5','S4','S8','S6','S7','S9','S10']})df['Rank'] = df.SaleCount.rank(method='dense',ascending = False).astype(int)#df['Rank'] = df.TotalRevenue.rank(method='dense',ascending = False).astype(int)df.sort_values(['Rank'],inplace=True)print(df)

电流输出:

Date        SaleCount   TotalRevenue    shops   Rank1   2016-12-02  100          9000            S2      15   2016-12-06  100          2000            S8      13   2016-12-04  35           750             S5      22   2016-12-03  30           1000            S1      37   2016-12-08  30           600             S7      39   2016-12-10  20           500             S10     44   2016-12-05  20           500             S4      40   2016-12-01  10           300             S3      58   2016-12-09  2            50              S9      66   2016-12-07  0            0               S6      7

我正在尝试生成这样的输出:

Date        SaleCount   TotalRevenue    shops   Rank1   2016-12-02  100          9000            S2      15   2016-12-02  100          2000            S8      23   2016-12-02  35           750             S5      32   2016-12-02  30           1000            S1      47   2016-12-02  30           600             S7      59   2016-12-02  20           500             S10     64   2016-12-02  20           500             S4      60   2016-12-02  10           300             S3      78   2016-12-02  2            50              S9      86   2016-12-02  0            0               S6      9
解决方法 另一种方法是将两个感兴趣的列类型转换为str,并通过连接它们来组合它们.将它们转换回数值,以便根据它们的大小区分它们.

在方法=密集中,重复值的等级将保持不变. (这里:6)

由于您希望按降序对这些进行排名,因此在Series.rank()中指定ascending = False可以实现所需的结果.

col1 = df["SaleCount"].astype(str) col2 = df["TotalRevenue"].astype(str)df['Rank'] = (col1+col2).astype(int).rank(method='dense',ascending=False).astype(int)df.sort_values('Rank')

总结

以上是内存溢出为你收集整理的python – Pandas按多列排名全部内容,希望文章能够帮你解决python – Pandas按多列排名所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1183542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存