我有一份数据
df =
type value
A 5
A 7
B 2
B 6
A 1我要按列type的组应用函数,所以等级将适用于每种类型,新的df将是
df =
type value rank
A 5 1
A 7 0
B 2 1
B 6 0
A 1 2发布于 2020-04-10 15:08:58
您可以使用groupby.rank,设置ascending=False
df['rank'] = df.groupby('type').value.rank(ascending=False).sub(1).astype(int)print(df)
type value rank
0 A 5 1
1 A 7 0
2 B 2 1
3 B 6 0
4 A 1 2发布于 2020-04-10 15:12:31
这可以用sort_values和groupby().cumcount()来完成。
df['rank'] = df.sort_values('value', ascending=False).groupby('type').cumcount()输出:
type value rank
0 A 5 1
1 A 7 0
2 B 2 1
3 B 6 0
4 A 1 2https://stackoverflow.com/questions/61143150
复制相似问题