我想创建一个manager_rank按sum回车对经理进行排名的列.我已经提出了下面发布的一个解决方案,但希望其他人有更优雅的东西.
import pandas as pd
df = pd.DataFrame([['2012', 'A', 1], ['2012', 'B', 4], ['2011', 'A', 5], ['2011', 'B', 4]],
columns=['year', 'manager', 'return'])
Run Code Online (Sandbox Code Playgroud)
期望的结果:
year manager return manager_rank
0 2012 A 1 2
1 2011 A 5 2
2 2012 B 4 1
3 2011 B 4 1
Run Code Online (Sandbox Code Playgroud)
df['ranking'] = df.groupby('manager')['return'].transform(np.sum).rank(ascending=False, method='dense')
year manager return ranking
0 2012 A 1 2
1 2012 B 4 1
2 2011 A 5 2
3 2011 B 4 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1096 次 |
| 最近记录: |