groupby组内排序
Ranking order within groupby groups
假设我有以下数据框 df_grouped
:
Sale
custid | product |
-------+-----------+------
1 | iPhone | 3000
| android | 2000
2 | iPhone | 1500
| android | 2500
并且我想要在每个组 (customerid
) 中以
结尾的排名
Sale
custid | product |
-------+-----------+------
1 | iPhone | 1
| android | 2
2 | iPhone | 2
| android | 1
如果我这样做 df_grouped.rank()
我得到一个全球排名
Sale
custid | product |
-------+-----------+------
1 | iPhone | 1
| android | 3
2 | iPhone | 4
| android | 2
但我想要每个组内的排名。我可以遍历每个 custid
并将 rank
应用于每个组,但是没有 faster/cleaner 方法吗?
使用GroupBy.rank
:
df['Rank'] = df.groupby(level='custid')['Sale'].rank()
假设我有以下数据框 df_grouped
:
Sale
custid | product |
-------+-----------+------
1 | iPhone | 3000
| android | 2000
2 | iPhone | 1500
| android | 2500
并且我想要在每个组 (customerid
) 中以
Sale
custid | product |
-------+-----------+------
1 | iPhone | 1
| android | 2
2 | iPhone | 2
| android | 1
如果我这样做 df_grouped.rank()
我得到一个全球排名
Sale
custid | product |
-------+-----------+------
1 | iPhone | 1
| android | 3
2 | iPhone | 4
| android | 2
但我想要每个组内的排名。我可以遍历每个 custid
并将 rank
应用于每个组,但是没有 faster/cleaner 方法吗?
使用GroupBy.rank
:
df['Rank'] = df.groupby(level='custid')['Sale'].rank()