groupby
和
rank
结合使用。
from io import StringIO
import pandas as pd
data = pd.read_table(StringIO("""ID Vehicle Auction Offer
3580845 2005VolvoXC90V8 Copart 215
3580845 2005VolvoXC90V8 ManheimSalvageAPI 170
3580845 2005VolvoXC90V8 MergedSalvage 195
3580845 2005VolvoXC90V8 ManheimSalvage 390
3580845 2005VolvoXC90V8 IAA 270
3580845 2005VolvoXC90V8 SVP 175
3580789 2003LexusES300 Copart 180
3580789 2003LexusES300 MergedSalvage 190
3580789 2003LexusES300 ManheimSalvage 355
3580789 2003LexusES300 IAA 270
3580789 2003LexusES300 SVP 180"""), sep=' ')
offer_rank_by_id = data.groupby('ID').rank(method = 'min', ascending = False).loc[:,'Offer'] == 2
data.loc[offer_rank_by_id,:]