在 pandas 中分组后根据匹配字符串过滤数据

Filtering data based on matching string after grouping in pandas

我想按 IdVehicle 分组,然后 return 只分组其拍卖只有 'Merged Salvage' 和 'Merged Salvage API' 值的车辆。除这两种类型之外的拍卖车辆将被过滤掉。我怎样才能做到这一点?

数据:

Id      Vehicle            Auction      Offer
10  1984 Porsche 944     Copart             100
10  1984 Porsche 944     Merged Salvage     200
10  1984 Porsche 944     IAA                140
11  2000 Chevrolet G3500 Copart              80
11  2000 Chevrolet G3500 Merged Salvage     100
11  2000 Chevrolet G3500 Merged Salvage API 120
11  2000 Chevrolet G3500 SVP                130
12  2001 Honda CRV       Merged Salvage      50
12  2001 Honda CRV       Merged Salvage API 100

预期输出:

Id      Vehicle            Auction      Offer
12  2001 Honda CRV       Merged Salvage      50
12  2001 Honda CRV       Merged Salvage API 100

我相信 df.groupby 操作,然后 dfGroupBy.transform 应该可以做到:

In [1097]: status = ['Merged Salvage', 'Merged Salvage API']

In [1098]: df[df.groupby(['Id', 'Vehicle']).Auction\
                 .transform(lambda x: x.isin(status).min())]
Out[1098]: 
   Id         Vehicle             Auction  Offer
7  12  2001 Honda CRV      Merged Salvage     50
8  12  2001 Honda CRV  Merged Salvage API    100

谓词使用 pd.Series.isin 检查状态。