Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中基于其他列创建排名列_Python_Python 3.x_Pandas - Fatal编程技术网

如何在Python中基于其他列创建排名列

如何在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值 任何关于如何实现这一

我有一个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值

任何关于如何实现这一点的建议都将不胜感激

使用+:

输出

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