Python 在大熊猫中给每一组分配一个等级

Python 在大熊猫中给每一组分配一个等级,python,pandas,Python,Pandas,我有一个数据帧,希望为组中的每一行分配一个等级。比如说, A,B,C,D,E --------- 1,2,5,3,5 2,4,5,4,3 1,2,3,4,5 2,4,4,5,6 3,5,6,7,7 因此,我想按列A和B分组,然后根据列C的值分配一个等级,但我想保留d和E。如果我按分组,我必须删除D和E。最简单的方法是什么?我会做以下几点: df['rank'] = df.groupby(['A', 'B'])['C'].transform(lambda x: x.rank()) 你如何选择排

我有一个数据帧,希望为组中的每一行分配一个等级。比如说,

A,B,C,D,E
---------
1,2,5,3,5
2,4,5,4,3
1,2,3,4,5
2,4,4,5,6
3,5,6,7,7

因此,我想按列
A
B
分组,然后根据列
C
的值分配一个等级,但我想保留
d
E
。如果我按分组,我必须删除
D
E
。最简单的方法是什么?

我会做以下几点:

df['rank'] = df.groupby(['A', 'B'])['C'].transform(lambda x: x.rank())

你如何选择排名?你能显示一个期望的输出吗?你期望的输出是什么?我想要一个类似于pandas中rank()函数的逻辑,对于每个组,看列'C'的值,最小的值将被赋予rank 1,等等
df.assign(rank=df.groupby(['a','B']).C.rank('min')
?这里不需要
transform
,我只是想让你慢下来。然后我会丢失其他的列(d和E),但我想保留them@user3483203很公平。我原以为
transform
会更快,但我只是进行了一些计时。我不知道它在多大程度上推广到更大的数据帧和更多的组,但是
转换
的速度几乎慢了5倍,这让我感到惊讶。@H.Z.列D和E仍然会在您的数据帧中。我不知道你的意思。