熊猫获取按其他列值分组的列值顺序

Ste*_*ers 1 group-by pandas

我有以下数据框:

srch_id    price    
1          30       
1          20       
1          25   
3          15
3          102
3          39
Run Code Online (Sandbox Code Playgroud)

现在,我想创建第三列,在其中确定按搜索ID分组的价格位置。这是我想要的结果:

srch_id    price    price_position
1          30       3
1          20       1
1          25       2
3          15       1
3          102      3
3          39       2
Run Code Online (Sandbox Code Playgroud)

我想我需要使用转换功能。但是我似乎无法弄清楚应该如何处理使用的参数.transform()

def k(r):
    return min(r)

tmp = train.groupby('srch_id')['price']
train['min'] = tmp.transform(k)
Run Code Online (Sandbox Code Playgroud)

因为r是列表还是元素?

ank*_*_91 5

你可以用series.rank()df.groupby()

df['price_position']=df.groupby('srch_id')['price'].rank()
print(df)
Run Code Online (Sandbox Code Playgroud)
   srch_id  price  price_position
0        1     30             3.0
1        1     20             1.0
2        1     25             2.0
3        3     15             1.0
4        3    102             3.0
5        3     39             2.0
Run Code Online (Sandbox Code Playgroud)