在 pandas 中分组后根据匹配字符串过滤数据
Filtering data based on matching string after grouping in pandas
我想按 Id
和 Vehicle
分组,然后 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
检查状态。
我想按 Id
和 Vehicle
分组,然后 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
检查状态。