python - 如何在 Python 中基于其他列创建排名列
问题描述
我有一个如下所示的 python 数据框:
此数据帧已按“transaction_count”降序排序。我想在该数据框中创建另一个名为“rank”的列,其中包含 cust_ID 的出现次数。我的期望输出如下所示:
对于 cust_ID = 1234 且 transaction_count = 4,排名将为 1,对于下一次出现的 cust_ID = 1234,排名将为 2,依此类推。
我尝试了以下方法:
df['rank'] = df["cust_ID"].value_counts()
df.head(10)
任何有关如何解决此问题的建议将不胜感激!
解决方案
你可以做:
df['rank'] = df.groupby('cust_ID')['transaction_count'].rank(ascending=False)
输出:
cust_ID associate_ID transaction_count rank
0 1234 608 4 1.0
1 1234 785 1 2.0
2 4789 345 2 1.0
3 3456 268 5 1.0
4 3456 725 3 2.0
5 3456 795 1 3.0
请注意,这不仅给出了计数,还给出了基于transaction_count
值的交易排名。
推荐阅读
- java - 在 Java 中使用 Optional 和 null 检查的最佳方法是什么?
- c++ - 如何在 C++ 中使用 eigen 库导入矩阵市场文件
- javascript - 将元素值从对象数组推送到变量
- javascript - Applescript:点击带有JS的按钮
- c# - 基于windows和UWP的加解密
- ruby-on-rails - 如何检查参数/字符串是否包含子字符串?
- c# - 为什么 ListView 行会随机变得非常非常高?
- cordova - IONIC Cordova 构建永远运行
- ios - iOS 中的语音识别何时受到限制,即 requestAuthorization 返回 `SFSpeechRecognizerAuthorizationStatusRestricted`
- javascript - 使用javascript在循环属性中添加类