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

Pandas DataFrame:删除value列仅含重复值的分组

按分组移除值列全重复的DataFrame分组

给定如下DataFrame:

letter  value   many    other   variables
A          5            
A          5            
A          8            
A          9            
B          3            
B         10            
B         10            
B          4            
B          5            
B          9            
C         10            
C         10            
C         10            
D          6            
D          8            
D         10            
E          5            
E          5            
E          5            
F          4            
F          4            

需求是按letter列分组后,删除所有value列仅含重复值(即分组内value只有一种)的分组,保留像A、B、D这类存在多个不同value的分组(哪怕分组内有重复值也没关系)。

解决方案

核心思路是判断每个分组内value的唯一值数量,只保留唯一值数量大于1的分组:

import pandas as pd

# 假设你的DataFrame名为df
# 计算每个letter分组的value唯一值数量,筛选出符合条件的letter
valid_groups = df.groupby('letter')['value'].nunique() > 1
valid_letters = valid_groups[valid_groups].index

# 过滤原DataFrame得到结果
result_df = df[df['letter'].isin(valid_letters)]

执行后得到的结果如下:

letter      value   many    other   variables
A            5          
A            5          
A            8          
A            9          
B            3          
B           10          
B           10          
B            4          
B            5          
B            9          
D            6          
D            8          
D           10          

为什么不用duplicated()

duplicated()是用来标记行级的重复值,直接使用会删除单个重复行,但我们的需求是判断整个分组的value是否全重复,所以用nunique()统计分组内唯一值数量的方式更精准,不会误删A、B这类包含部分重复但整体有多个不同值的分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:30:52