首页 >后端开发 >Python教程 >如何在 Pandas GroupBy 操作中查找最大计数的行?

如何在 Pandas GroupBy 操作中查找最大计数的行?

Susan Sarandon
Susan Sarandon原创
2024-12-29 19:16:16144浏览

How to Find Rows with the Maximum Count in Pandas GroupBy Operations?

获取 Pandas 组中计数最大的行

问题:

如何识别行按多个分组时,pandas DataFrame 中“count”列的最高值列?

解决方案:

第 1 步:查找每个组的最大计数

确定每个组的最大计数组,使用 groupby() 和 max() 函数:

max_counts = df.groupby(['Sp', 'Mt'])['count'].max()

这将创建包含每个组的最大计数的系列。

步骤 2:识别具有最大计数的行

获取原始 DataFrame 中具有最大计数的行的索引,使用transform()方法:

idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']

这将创建一个布尔系列,其中True表示具有最大值的行

第 3 步:根据最大计数过滤行

最后,使用布尔索引过滤 DataFrame 以仅选择具有最大计数的行:

result = df[idx]

这将返回一个新的 DataFrame,其中仅包含每个数据框中“count”列具有最高值的行组。

示例:

示例1:

df = pd.DataFrame({
    'Sp': ['MM1', 'MM1', 'MM1', 'MM2', 'MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S1', 'S1', 'S3', 'S3', 'S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['a', 'n', 'cb', 'mk', 'bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [3, 2, 5, 8, 10, 1, 2, 2, 7]
})

输出:

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

示例2:

df = pd.DataFrame({
    'Sp': ['MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [10, 1, 2, 8, 8]
})

输出:

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

注意:如果组内的多行有最大计数,所有这些行都将被返回。

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

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