我有一个包含 3 列的 Pandas DataFrame:日期、概念和值。我想添加第四列“排名”,其中包含按日期分组时价值的订单统计信息。例如,请考虑下表:
日期 | 概念 | 价值 |
---|---|---|
2021-01-01 | 一种 | 20 |
2021-01-01 | 乙 | 30 |
2021-01-01 | C | 25 |
2021-02-01 | 一种 | 17 |
2021-02-01 | 乙 | 31 |
2021-02-01 | C | 42 |
在这种情况下,我的决赛桌应该是这样的:
日期 | 概念 | 价值 | 秩 |
---|---|---|---|
2021-01-01 | 一种 | 20 | 1 |
2021-01-01 | 乙 | 30 | 3 |
2021-01-01 | C | 25 | 2 |
2021-02-01 | 一种 | 17 | 1 |
2021-02-01 | 乙 | 31 | 2 |
2021-02-01 | C | 42 | 3 |
有没有什么优雅的方法可以用熊猫来做到这一点?
使用transform
有pd.Series.rank
:
df = pd.DataFrame({'Date': {0: '2021-01-01 ', 1: '2021-01-01 ', 2: '2021-01-01 ', 3: '2021-02-01 ', 4: '2021-02-01 ', 5: '2021-02-01 '},
'Concept ': {0: 'A ', 1: 'B ', 2: 'C ', 3: 'A ', 4: 'B ', 5: 'C '},
'Value': {0: 20, 1: 30, 2: 25, 3: 17, 4: 31, 5: 42}})
df['Rank'] = df.groupby(['Date'])['Value'].transform(pd.Series.rank)
Date Concept Value Rank
0 2021-01-01 A 20 1
1 2021-01-01 B 30 3
2 2021-01-01 C 25 2
3 2021-02-01 A 17 1
4 2021-02-01 B 31 2
5 2021-02-01 C 42 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句