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

Pandas同列分组条件过滤:筛选成对出现且结果均为正的关联数据

Pandas 关联配对正数筛选实现

实现思路

  1. 提取配对公共标识:将item列末尾的_wp后缀去除,得到每对关联条目的唯一分组ID
  2. 按分组ID聚合校验:对每个分组校验两个条目的result值是否均严格大于0
  3. 过滤保留符合条件的所有配对条目

完整实现代码

import pandas as pd

# 构造示例数据集
data = {'item':['fxr_dl2_rank.r1','fxr_dl2_rank.r2','fxr_dl2_rank.r3',
                'fxr_dl2_rank.r4','fxr_dl2_rank.r5',
                'fxr_dl2_rank.r1_wp','fxr_dl2_rank.r2_wp','fxr_dl2_rank.r3_wp',
                'fxr_dl2_rank.r4_wp','fxr_dl2_rank.r5_wp',],
'result':[-0.15,0.13,-0.29,0.18,-0.18,0.00,0.16,0.15,0.17,-0.17]}
df = pd.DataFrame(data)

# 步骤1:生成分组ID
df['group_id'] = df['item'].str.replace(r'_wp$', '', regex=True)

# 步骤2:筛选两个result均为正数的分组
valid_groups = df.groupby('group_id').filter(lambda x: (x['result'] > 0).all())['group_id'].unique()

# 步骤3:获取符合条件的所有配对行
result_df = df[df['group_id'].isin(valid_groups)]
print(result_df)

输出结果说明

运行后会得到两组符合条件的配对:

  • fxr_dl2_rank.r2(result=0.13)和fxr_dl2_rank.r2_wp(result=0.16)
  • fxr_dl2_rank.r4(result=0.18)和fxr_dl2_rank.r4_wp(result=0.17)

可选:宽表格式输出

如果需要每一行对应一个配对,可使用透视表转换:

wide_result = df.pivot(
    index='group_id',
    columns=df['item'].str.endswith('_wp').map({True: 'wp_result', False: 'normal_result'}),
    values='result'
).query('normal_result > 0 and wp_result > 0').reset_index()
print(wide_result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:12:02