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

Posted

技术标签:

【中文标题】在 Pandas 数据框中按组过滤具有最小值的行 [重复]【英文标题】:Filter rows with minimum values groupwise in Pandas dataframe [duplicate] 【发布时间】:2019-04-02 23:08:34 【问题描述】:

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

示例:

ORIGIN   | DESTINA. | PRICE
____________________________
BOG      | MAD      |  1500
BOG      | MAD      |  750
BOG      | MAD      |  1250
BOG      | MAD      |  1350
BOG      | MIA      |   450

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

ORIGIN   | DESTINA. | PRICE
____________________________
BOG      | MAD      | 750
BOG      | MIA      | 450

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

【问题讨论】:

仅将max 更改为minidxmax 更改为idxmin 【参考方案1】:

使用GroupBy + transformmin

df = df[df['PRICE'] == df.groupby('ORIGIN')['PRICE'].transform('min')]

这将保持重复的分组最小值。如果您想要保留重复项,您可以排序,然后删除重复项:

df = df.sort_values('PRICE').drop_duplicates('ORIGIN')

【讨论】:

以上是关于在 Pandas 数据框中按组过滤具有最小值的行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 pandas 数据框中显示具有一个或多个 NaN 值的行

在 Pandas GroupBy 数据框中按 ID 计算两个日期之间的行数

按组提取对应于变量最小值的行

在数据框中按组折叠文本[重复]

Pandas GroupBy 并选择特定列中具有最小值的行

无法在熊猫数据框中按时间戳索引