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我也尝试过,但结果不同。