能否基于DataFrame分组统计的nunique唯一值删除指定条件的行
完全可以用你提到的df.drop写法实现需求,以下是具体实现方案:
注意:你之前统计分组唯一值时
occupation列名拼写有误,实际运行代码时请核对列名避免报错。
实现代码
方法1:按你要求的drop写法实现
# 统计每个职业分组下的name唯一值数量 occ_name_unique = df.groupby('occupation')['name'].nunique() # 筛选出唯一值小于2的职业对应的行,删除后赋值给新df df = df.drop(df[df['occupation'].isin(occ_name_unique[occ_name_unique < 2].index)].index)
方法2:更简洁的布尔索引写法(效果完全一致)
借助transform把分组计算结果映射到每一行,直接筛选即可:
df = df[df.groupby('occupation')['name'].transform('nunique') >= 2]
结果说明
两种写法运行后,都会删除doctor(name唯一值为1)、tailor(name唯一值为1)两个分组的所有行,最终输出和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者futuredataengineer
相关产品推荐
相关产品推荐

