以下是我掌握的数据:
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(不考虑曼海姆打捞,因为我们希望下一个在它之后),而对于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,如果那一行的NextCalculator
与Calculator
相同,那么我必须使用cumcount()==1来获得第二行。有什么帮助吗?或者有什么有效的方法来获得所需的输出吗
IIUC公司:
相关问题 更多 >
编程相关推荐