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

基于Plant-Part组合的多Action数据去重处理需求求助

解决方案

针对你提出的分组筛选需求,以下是两种常用工具的实现方式:

SQL 实现

利用窗口函数标记每个Plant-Part组是否包含目标动作(Action4),再基于标记筛选符合要求的记录:

WITH group_flags AS (
    SELECT 
        Plant,
        Part,
        Action,
        -- 标记当前组是否存在Action4
        MAX(CASE WHEN Action = 'Action4' THEN 1 ELSE 0 END) OVER (PARTITION BY Plant, Part) AS has_action4
    FROM your_table
)
SELECT Plant, Part, Action
FROM group_flags
WHERE 
    -- 组内无Action4则保留所有记录
    has_action4 = 0 
    -- 组内有Action4则仅保留Action4的记录
    OR (has_action4 = 1 AND Action = 'Action4');

Python Pandas 实现

通过分组转换标记组内是否存在目标动作,再进行筛选:

import pandas as pd

# 假设数据已加载到DataFrame中
df = pd.DataFrame({
    'Plant': [101]*8,
    'Part': [123]*4 + [124]*2 + [125]*2,
    'Action': ['Action1','Action2','Action3','Action4','Action2','Action4','Action1','Action2']
})

# 给每行标记所在Plant-Part组是否包含Action4
df['has_action4'] = df.groupby(['Plant', 'Part'])['Action'].transform(lambda x: 'Action4' in x.values)

# 筛选符合条件的记录并移除辅助列
result_df = df[(~df['has_action4']) | (df['Action'] == 'Action4')].drop('has_action4', axis=1)

print(result_df)

两种方法核心逻辑一致:先识别每个分组是否存在目标动作,再根据识别结果保留对应记录,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:11:00