我有一个数据框,
d
:
Position Operation Side Price Size
9 9 0 1 0.7289 -16
8 8 0 1 0.729 -427
7 7 0 1 0.7291 -267
6 6 0 1 0.7292 -15
5 5 0 1 0.7293 -16
4 4 0 1 0.7294 -16
3 3 0 1 0.7295 -426
2 2 0 1 0.7296 -8
1 1 0 1 0.7297 -14
0 0 0 1 0.7298 -37
10 0 0 0 0.7299 6
11 1 0 0 0.73 34
12 2 0 0 0.7301 7
13 3 0 0 0.7302 9
14 4 0 0 0.7303 16
15 5 0 0 0.7304 15
16 6 0 0 0.7305 429
17 7 0 0 0.7306 16
18 8 0 0 0.7307 265
19 9 0 0 0.7308 18
使用以下内容更新
d
来重新计算 Position
:
d['Position'] = d.groupby('Side')['Price'].rank().astype('int').sub(1)
但是由于每个
Side
分组的排序顺序不同,有没有办法对一组进行 ascending
排序,对另一组进行 descending
排序?
您可以使用
groupby.apply
访问 group.name
:
d.groupby('Side')['Price'].apply(lambda x: x.rank(ascending=g.name==1).astype('int').sub(1))