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

Pandas实操:删除多级索引下仅含单种ans值的对应分组行

解决方案

首先确保你的DataFrame已经将no和ans设置为多级索引,未设置的话先执行:

df = df.set_index(['no', 'ans'])

方法1:分组过滤(逻辑直观,适合小数据量)

直接按no分组,筛选同时包含Yes和No的分组即可:

result = df.groupby(level='no').filter(
    lambda g: {'Yes', 'No'}.issubset(g.index.get_level_values('ans').unique())
)

方法2:索引筛选(性能更高,适合百万级以上大数据量)

先统计符合条件的no值,再直接按索引过滤:

# 统计每个no对应的ans数量,保留数量为2的no
keep_nos = df.index.get_level_values('no').value_counts()[lambda s: s == 2].index
# 过滤出符合条件的行
result = df[df.index.get_level_values('no').isin(keep_nos)]

两种方法最终输出的result都符合要求:

freq
no ans        
1  Yes      23
   No       89
2  Yes      45
   No       76

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:48:00