我有以下数据框:
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是列表还是元素?
你可以用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)
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |