温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to create rank column in Python based on other columns
pandas python python-3.x

其他 - 如何在Python中基于其他列创建等级列

发布于 2020-03-27 11:18:17

我有一个看起来像以下的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)

但是等级列会被创建为所有NaN值 在此处输入图片说明

任何有关如何解决此问题的建议将不胜感激!

查看更多

查看更多

提问者
user3116949
被浏览
19
Dani Mesejo 2019-01-08 03:19

使用groupby + cumcount

df['rank'] = df.groupby('cust_ID').cumcount() + 1
print(df['rank'])

输出量

0    1
1    2
2    1
3    1
4    2
5    3
Name: rank, dtype: int64