在 Pandas 数据框中按组过滤具有最小值的行

rub*_*119 2 python group-by aggregate pandas pandas-groupby

我刚刚过滤了一些数据,现在我有一个 .csv 文件,但我注意到我只需要选择具有最低价格的行:

例子:

ORIGIN   | DESTINA. | PRICE
____________________________
BOG      | MAD      |  1500
BOG      | MAD      |  750
BOG      | MAD      |  1250
BOG      | MAD      |  1350
BOG      | MIA      |   450
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中,我想得到的只是第三行和第六行:

ORIGIN   | DESTINA. | PRICE
____________________________
BOG      | MAD      | 750
BOG      | MIA      | 450
Run Code Online (Sandbox Code Playgroud)

使用 python,我怎样才能得到这个决赛桌?

jpp*_*jpp 6

使用GroupBy+transformmin

df = df[df['PRICE'] == df.groupby('ORIGIN')['PRICE'].transform('min')]
Run Code Online (Sandbox Code Playgroud)

这将保留重复的分组最小值。如果你希望保留副本,您可以进行排序,然后删除重复项:

df = df.sort_values('PRICE').drop_duplicates('ORIGIN')
Run Code Online (Sandbox Code Playgroud)