You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中筛选Pandas DataFrame分组内P值最大的行?

Pandas按组保留P值最大行的实现方法

首先先构造你提供的示例DataFrame:

import pandas as pd

df = pd.DataFrame({
    'ind': [0, 1, 2, 3],
    'SID': [1, 1, 1, 1],
    'SEMID': [5, 5, 5, 3],
    'TID': [450, 451, 452, 455],
    'TYP': ['A', 'A', 'A', 'A'],
    'P': [10, 9, 15, 2]
})

下面提供两种适合新手的实现方式:

方法一:使用groupby + idxmax

这种方法直接定位每组中P值最大的行的索引,再筛选原数据:

# 按分组键(SID、SEMID、TYP)分组,获取每组P列最大值对应的行索引
max_p_idx = df.groupby(['SID', 'SEMID', 'TYP'])['P'].idxmax()
# 根据索引提取目标行
result = df.loc[max_p_idx]
# 可选:重置索引让输出更整洁
result = result.reset_index(drop=True)

方法二:排序后去重

通过先排序再去重的方式,保留每组中P值最大的行,逻辑更直观:

# 按分组键升序、P值降序排序,确保每组中P最大的行排在最前面
sorted_df = df.sort_values(by=['SID', 'SEMID', 'TYP', 'P'], ascending=[True, True, True, False])
# 按分组键去重,只保留每组的第一行(即P最大的行)
result = sorted_df.drop_duplicates(subset=['SID', 'SEMID', 'TYP'], keep='first')
# 可选:重置索引
result = result.reset_index(drop=True)

两种方法最终都会得到你期望的输出结果。

内容的提问来源于stack exchange,提问作者Saddaf Afrin Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:52:57