如何在Python中基于其他列创建排名列
我有一个python数据框架,看起来如下所示: 此数据帧已按“事务计数”降序排序。我想在该数据框中创建另一个名为“rank”的列,其中包含cust_ID的出现次数。我的期望输出如下所示: 对于事务计数为4的cust_ID=1234,排名将为1,对于cust_ID=1234的下一次出现,排名将为2,依此类推 我尝试了以下方法:如何在Python中基于其他列创建排名列,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个python数据框架,看起来如下所示: 此数据帧已按“事务计数”降序排序。我想在该数据框中创建另一个名为“rank”的列,其中包含cust_ID的出现次数。我的期望输出如下所示: 对于事务计数为4的cust_ID=1234,排名将为1,对于cust_ID=1234的下一次出现,排名将为2,依此类推 我尝试了以下方法: df['rank'] = df["cust_ID"].value_counts() df.head(10) 但是rank列被创建为所有NaN值 任何关于如何实现这一
df['rank'] = df["cust_ID"].value_counts()
df.head(10)
但是rank列被创建为所有NaN值
任何关于如何实现这一点的建议都将不胜感激 使用+:
输出
0 1
1 2
2 1
3 1
4 2
5 3
Name: rank, dtype: int64
你可以做:
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\u count
值给出了事务的排名
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