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

Pandas筛选同时包含x和n36的唯一ID对应行问题

解决方法:筛选同时包含指定code值的ID对应的行

你的问题出在只过滤了code为x或n36的行,但没有确保这些行所属的ID同时拥有这两个code值——所以像999_c_133这种只有x没有n36的ID也被保留了。

这里有两种简洁的实现方式:

方法一:先获取符合条件的ID,再筛选目标行

# 第一步:找出同时包含"x"和"n36"的所有唯一ID
valid_ids = df.groupby('ID').filter(
    lambda group: set(group['code']).issuperset({'x', 'n36'})
)['ID'].unique()

# 第二步:筛选这些ID中code为"x"或"n36"的行
result = df[(df['ID'].isin(valid_ids)) & (df['code'].isin(['x', 'n36']))]

方法二:直接通过分组过滤+二次筛选

# 先过滤出所有属于"同时拥有x和n36"的ID的行
filtered_df = df.groupby('ID').filter(
    lambda group: ('x' in group['code'].values) and ('n36' in group['code'].values)
)

# 再从中筛选出code为x或n36的行(如果不需要其他code的话)
result = filtered_df[filtered_df['code'].isin(['x', 'n36'])]

执行后得到的result就是你要的预期结果:

IDcode
333_c_132x
333_c_132n36
998_c_134x
998_c_134n36
997_c_135x
997_c_135n36

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:57:46