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

Python中基于Rank筛选前后行值相同的数据行的问题

解决方案:筛选Rank1和Rank2均为TEST1的ID对应的行

假设你用Pandas处理数据,这里提供两种简洁的实现方式,直接解决你的筛选需求:

方法一:分组验证法

# 1. 提取Rank为1和2的行,聚焦关键判断数据
rank_subset = df[df['Rank'].isin([1, 2])]

# 2. 按ID分组,验证两个核心条件:Col2全为TEST1,且同时存在Rank1和Rank2(分组行数为2)
valid_ids = rank_subset.groupby('Col1')['Col2'].apply(
    lambda x: (x == 'TEST1').all() and len(x) == 2
).reset_index()
valid_ids = valid_ids[valid_ids['Col2'] == True]['Col1'].tolist()

# 3. 用符合条件的ID过滤原数据集,得到目标结果
result_df = df[df['Col1'].isin(valid_ids)]

方法二:透视表判断法

这种方式更直观,通过透视表直接对比Rank1和Rank2的Col2值:

# 1. 生成透视表,每个ID对应Rank1和Rank2的Col2值
pivot_df = df[df['Rank'].isin([1, 2])].pivot(
    index='Col1', columns='Rank', values='Col2'
)

# 2. 筛选Rank1和Rank2均为TEST1的ID
valid_ids = pivot_df[(pivot_df[1] == 'TEST1') & (pivot_df[2] == 'TEST1')].index.tolist()

# 3. 过滤原数据得到结果
result_df = df[df['Col1'].isin(valid_ids)]

补充说明

  • 如果你只需要保留Rank1和Rank2的行,把最后一步的df换成rank_subset即可
  • 两种方法都能自动检测并筛选出满足「Rank1为TEST1且Rank2也为TEST1」的ID,无需手动指定ID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:32:09