簡體   English   中英

使用熊貓中的累計執行條件分組並選擇第二好的行

[英]Perform Conditional Grouping and selecting second best row using Cumcount in Pandas

這是我擁有的數據:

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,如果該行的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM