假设有以下DataFrame:
import pandas as pd
data = {
'name': ['Alice', 'Bob', 'Charlie', 'Dave', 'Emma', 'Frank'],
'score': [75, 82, 90, 87, 94, 81],
'class': ['A', 'A', 'B', 'B', 'A', 'B']
}
df = pd.DataFrame(data)
要按照“class”列分组,再按“score”列排名,可以使用groupby()
和rank()
函数:
df['rank'] = df.groupby('class')['score'].rank(method='dense', ascending=False)
其中,groupby('class')
按照“class”列进行分组,rank()
对每组中的“score”列进行排名,method='dense'
指定使用密集排名(即排名值之间不会有间距),ascending=False
指定按照降序排名。最终,将排名结果命名为“rank”列并添加到DataFrame中。
输出结果为:
name score class rank
0 Alice 75 A 2.0
1 Bob 82 A 1.0
2 Charlie 90 B 2.0
3 Dave 87 B 1.0
4 Emma 94 A 0.0
5 Frank 81 B 2.0
上一篇:按另一列对分区进行自增列
下一篇:按另一列对值进行分组求和的R代码