首页 > 后端开发 > Python教程 > 如何在 Pandas 中查找组内具有最大计数值的行?

如何在 Pandas 中查找组内具有最大计数值的行?

Susan Sarandon
发布: 2024-12-26 03:59:09
原创
1038 人浏览过

How to Find Rows with Maximum Count Values within Groups in Pandas?

分组数据并检索具有最大计数值的行

要确定组内具有最大计数值的行,可以使用 groupby 操作pandas DataFrame。

考虑以下内容DataFrame:

Sp Mt Value count
MM1 S1 a 3
MM1 S1 n 2
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM2 S4 dgd 1
MM4 S2 rd 2
MM4 S2 cb 2
MM4 S2 uyi 7

示例 1:

我们的目标是识别每个组中的行(由 ['Sp', 'Mt'] 定义)最高计数值。在示例 1 中,我们有以下预期输出:

Sp Mt Value count
MM1 S1 a 3
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM4 S2 uyi 7

要实现此目的,我们可以首先获取每个组的最大计数值:

df.groupby(['Sp', 'Mt'])['count'].max()
登录后复制
登录后复制

这会产生:

Sp Mt
MM1 S1 3
MM1 S3 5
MM2 S3 8
MM2 S4 10
MM4 S2 7

然后,提取原始 DataFrame 的索引,其中计数值等于每个索引中的最大值group:

idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
df[idx]
登录后复制

这将产生所需的输出。

示例 2:

在示例 2 中,预期输出如下:

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

在此场景中,MM4 组内有多行具有最大计数值(8)。使用与之前相同的方法,我们获得两行:

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

更新:

如果目标是向 DataFrame 添加一个新列,指示每个组内的最大计数值,我们可以使用转换方法来计算每个组的值row:

df.groupby(['Sp', 'Mt'])['count'].max()
登录后复制
登录后复制

这将生成一个包含 count_max 列的 DataFrame,其中包含每个列的最大计数值组:

Sp Mt Value count count_max
MM1 S1 a 3 3
MM1 S1 n 2 3
MM1 S3 cb 5 5
MM2 S3 mk 8 8
MM2 S4 bg 10 10
MM2 S4 dgd 1 10
MM4 S2 rd 2 7
MM4 S2 cb 2 7
MM4 S2 uyi 7 7

以上是如何在 Pandas 中查找组内具有最大计数值的行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板