问题:
从 pandas DataFrame 中检索具有最大计数的行“count”列的最大值,按“Sp”和“Mt”分组
示例:
示例 1:
输入 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 |
预期输出:
Sp | Mt | Value | count |
---|---|---|---|
MM1 | S1 | a | 3 |
MM1 | S3 | cb | 5 |
MM2 | S3 | mk | 8 |
MM2 | S4 | bg | 10 |
MM4 | S2 | uyi | 7 |
示例 2:
输入 DataFrame:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM2 | S4 | dgd | 1 |
MM4 | S2 | rd | 2 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
预期输出:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
解决方案:
import pandas as pd df.groupby(['Sp', 'Mt'])['count'].max()
这将返回一个系列,其中包含“Sp”和“Sp”的每个唯一组合的最大计数“Mt”。
idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
这将创建一个布尔掩码,其中 True 表示具有最大计数的行他们的小组。
df[idx]
这会过滤 DataFrame 以仅包含 idx 掩码为 True 的行,从而产生所需的输出。
注意: 如果多个行出现在同一组中,则将返回最大计数相等的多行。
以上是如何获取分组 Pandas DataFrame 中最大计数的行?的详细内容。更多信息请关注PHP中文网其他相关文章!