如果我有一个 DataFrame 例如
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
是否有一种方法可以按 col3 对 col2 中的每种类型对行进行排名?例如,这个解决方案看起来像
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
关于python - 如何按子组对 DataFrame 进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38570175/