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

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

Susan Sarandon
Susan Sarandon原创
2024-12-26 03:59:09992浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn