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

如何基于tho_cw_diff最小值及轨位条件筛选并新增列

按规则新增匹配列的实现方案

核心匹配规则

  • 规则1(对应ID 1877场景):同一ID分组内,筛选tho_cw_diff值最小且thor_pos与CW_pos轨位相同的记录,标记为匹配项;
  • 规则2(对应ID 7931场景):若分组内tho_cw_diff最小值对应的所有记录轨位均不同,则在同组内查找所有轨位相同的记录中tho_cw_diff最小的项,标记为匹配项;
  • 规则3(对应ID 8880场景):若同ID分组内所有记录的轨位均不相同,直接选取tho_cw_diff值最小的记录作为匹配项。

预期输出效果

预期输出截图

Python(Pandas)实现代码

import pandas as pd

# 假设数据集存储在DataFrame df中,包含列:ID, tho_cw_diff, thor_pos, CW_pos
df['is_matched'] = False

# 按ID分组处理每条规则
for id_val, group in df.groupby('ID'):
    min_diff = group['tho_cw_diff'].min()
    min_diff_rows = group[group['tho_cw_diff'] == min_diff]
    
    # 执行规则1:检查最小值子集内是否有轨位相同的记录
    same_pos_min = min_diff_rows[min_diff_rows['thor_pos'] == min_diff_rows['CW_pos']]
    if not same_pos_min.empty:
        df.loc[same_pos_min.index, 'is_matched'] = True
        continue
    
    # 执行规则2:检查分组内是否存在轨位相同的记录
    same_pos_all = group[group['thor_pos'] == group['CW_pos']]
    if not same_pos_all.empty:
        min_diff_same_pos = same_pos_all['tho_cw_diff'].min()
        target_rows = same_pos_all[same_pos_all['tho_cw_diff'] == min_diff_same_pos]
        df.loc[target_rows.index, 'is_matched'] = True
        continue
    
    # 执行规则3:分组内无轨位相同记录,标记最小值记录
    df.loc[min_diff_rows.index, 'is_matched'] = True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:35:44