在Pandas中基于多个条件和组执行列内匹配值的累积计数



我有一个df,里面有不同的商家、产品和人气排名,大小不一。

<表类> 商人 产品 等级 tbody><<tr>商人1苹果1商人1香蕉2商人1芒果3商人1葡萄4商人1猕猴桃5商人2橙色1商人2苹果2商人2香蕉3商人2葡萄4商人3芒果1商人3葡萄2商人3橙色3

您可以使用:

products = ['apple', 'banana', 'orange']
out = (df
.groupby('Merchant', as_index=False)
.agg(**{'Adjusted Rank': ('Product', lambda s: s.isin(products).cummin().sum()+1)})
)

输出:

Merchant  Adjusted Rank
0  Merchant 1              3
1  Merchant 2              4
2  Merchant 3              1

= 2:

out['Rank'] = out['Adjusted Rank'].where(out['Adjusted Rank'].gt(2), 1)

最新更新