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