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

如何过滤Pandas DataFrame:保留非重复项及重复项中B值最大行

Pandas DataFrame 过滤需求:保留非重复行及重复组中B值最大的行

我是Pandas DataFrame的新手,如果有现成的简单实现方式我没考虑到,先在此致歉。

假设有一个DataFrame df,包含3列:

  • A:字符串类型,值不唯一,相同A对应的B值可能不同
  • B:浮点类型
  • C:布尔类型,C=True表示对应A值在数据集中重复(实际可通过df['C']=df['A'].duplicated(keep=False)生成,属于冗余列)

示例DataFrame如下:

|   | A   | B   | C     |
|---|-----|-----|-------|
| 0 | cat | 10  | True  |
| 1 | dog | 10  | False |
| 2 | cat | 20  | True  |
| 3 | bee | 100 | False |

我想要处理后的DataFrame满足:

  • 对于A值重复的行(即C==True),只保留B值最大的那一行
  • 同时保留所有A值不重复的行(C==False)

我已经能获取重复组中B值最大的行:

df.loc[df[df['C']].groupby('A')['B'].idxmax()]   # 这是否是最优方法?

但我需要的是完整的过滤结果,也就是把非重复行和上述最大B值行合并到一起。我想到的方法是将df[~df['C']]和上面的结果拼接,想问这是不是最优的实现方式?


内容的提问来源于stack exchange,提问作者Limone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:40:43