gpt4 book ai didi

python - 使用 Pandas 中的 Cumcount 执行条件分组并选择第二最佳行

转载 作者:行者123 更新时间:2023-12-01 02:40:25 24 4
gpt4 key购买 nike

这是我拥有的数据:

ID              Vehicle     Calculator     Offer NextCalculator NextOffer
3497827 2002 Ford Explorer Manheim Salvage 190 Copart 190
3497827 2002 Ford Explorer Manheim Salvage 190 IAA 140
3497827 2002 Ford Explorer Manheim Salvage 190 Manheim Salvage 190
3497827 2002 Ford Explorer Manheim Salvage 190 SVP 55
3497828 2003 Honda CRV Manheim Salvage 320 Copart 150
3497828 2003 Honda CRV Manheim Salvage 320 IAA 320
3497828 2003 Honda CRV Manheim Salvage 320 Manheim Salvage 320
3497828 2003 Honda CRV Manheim Salvage 320 SVP 200

我想要做的是找出每辆车的下一个最佳计算器报价是什么?例如。对于 3497827,下一个最佳报价是 Copart - 190(不考虑 Manheim Salvage,因为我们想要下一个),对于 3497828,下一个最佳报价是 IAA - 320。

到目前为止我已经完成了

df = df.sort_values(['ID', 'NextOffer'], ascending=False)
df1 = df[df.groupby('ID').cumcount() == 1]

这给了我:

ID              Vehicle     Calculator     Offer NextCalculator NextOffer
3497827 2002 Ford Explorer Manheim Salvage 190 Manheim Salvage 190
3497828 2003 Honda CRV Manheim Salvage 320 IAA 320

仅当 NextOffers 小于 Offer 值时,它才会给出正确的结果,但如果 NextOffer 与 Offer 相同,则不会。

我想要的是:

ID              Vehicle     Calculator     Offer NextCalculator NextOffer
3497827 2002 Ford Explorer Manheim Salvage 190 Copart 190
3497828 2003 Honda CRV Manheim Salvage 320 IAA 320

所以我的猜测是,首先我必须执行 cumcount() == 0 并且如果该行 NextCalculatorCalculator 相同,那么我必须得到第二行使用 cumcount() == 1。对于如何执行此操作有任何帮助,或者是否有任何有效的方法来获得所需的输出?

最佳答案

IIUC:

In [21]: df.loc[df.query("Calculator != NextCalculator")
.groupby('ID', as_index=False).NextOffer.idxmax()]
Out[21]:
ID Vehicle Calculator Offer NextCalculator NextOffer
0 3497827 2002 Ford Explorer Manheim Salvage 190 Copart 190
5 3497828 2003 Honda CRV Manheim Salvage 320 IAA 320

关于python - 使用 Pandas 中的 Cumcount 执行条件分组并选择第二最佳行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45772006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com