Python 如何按子组对数据帧进行排序

Python 如何按子组对数据帧进行排序,python,pandas,Python,Pandas,如果我有一个数据帧,比如 col1 col2 col3 0 x1 typeA 3 1 x2 typeB 13 2 x3 typeB 3 3 x4 typeA 5 4 x5 typeB 1 5 x6 typeA 1 对于col2中的每种类型,是否有一种按col3对行进行排序的方法?例如,此解决方案如下所示 col1 col2 col3 rank 0 x1 typeA 3 2

如果我有一个数据帧,比如

  col1   col2  col3
0   x1  typeA     3
1   x2  typeB    13
2   x3  typeB     3
3   x4  typeA     5
4   x5  typeB     1
5   x6  typeA     1
对于col2中的每种类型,是否有一种按col3对行进行排序的方法?例如,此解决方案如下所示

  col1   col2  col3  rank
0   x1  typeA     3    2
1   x2  typeB    13    1
2   x3  typeB     3    2 
3   x4  typeA     5    1
4   x5  typeB     1    3
5   x6  typeA     1    3

transform
保持与原始数据帧相同的形状。然后使用
lambda
函数根据
col2
中的分组对
col3
进行排序

df['col4'] = df.groupby('col2').col3.transform(lambda group: group.rank())

>>> df
  col1   col2  col3  col4
0   x1  typeA     3     2
1   x2  typeB    13     3
2   x3  typeB     3     2
3   x4  typeA     5     3
4   x5  typeB     1     1
5   x6  typeA     1     1

我认为它可以在没有lambda函数的情况下完成:
.groupby('col2').col3.transform('rank').astype(np.int8)
@MaxU我也尝试过,但结果不同。