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

基于Campaign分组识别重复记录并生成带action字段的结果请求

需求实现方案

一、重复记录识别与过滤规则

  • Campaign名称拆分逻辑:将Campaign按{prefix + keyword + suffix}拆分,关键词固定为shoes、apparel、watch。例如Gen_X_Shoes_TTU_Bing拆分后:
    • prefix:Gen_X(关键词之前的部分,去除末尾下划线)
    • keyword:shoes(匹配到的目标关键词)
    • suffix:TTU_Bing(关键词之后的部分,去除开头下划线)
  • 重复判定标准:两条记录满足以下全部条件则视为重复:
    • Campaign的prefix + suffix完全一致
    • advertiser、shopid、customerid字段完全相同
  • 去重保留规则:同一重复组内,按关键词优先级(1. Shoes > 2. Apparel > 3. Watch)保留优先级最高的一条记录

示例输入

adverstiser | shopid | campaign               | customerid
ABC1        | XYZ1   | Gen_X_Shoes_TTU_Bing   | cust123
ABC1        | XYZ1   | Gen_X_Apparel_TTU_Bing | cust123
ABC2        | XYZ2   | Zen_X_Watch_SKU_Gogl   | cust456
ABC2        | XYZ2   | Zen_X_Apparel_SKU_Gogl | cust456
ABC3        | XYZ3   | Gen_Z_Watch_INL_Gogl   | cust567 

去重后示例输出

adverstiser | shopid | campaign               | customerid
ABC1        | XYZ1   | Gen_X_Shoes_TTU_Bing   | cust123
ABC2        | XYZ2   | Zen_X_Apparel_SKU_Gogl | cust456
ABC3        | XYZ3   | Gen_Z_Watch_INL_Gogl   | cust567 

二、最终结果生成规则

将去重后的每条记录复制为两条,新增action字段,分别赋值为set和ready


实现方案(Python + Pandas)

以下是基于Python Pandas库的代码实现,适用于结构化表格数据处理:

import pandas as pd

# 1. 加载输入数据(示例数据)
data = {
    'adverstiser': ['ABC1', 'ABC1', 'ABC2', 'ABC2', 'ABC3'],
    'shopid': ['XYZ1', 'XYZ1', 'XYZ2', 'XYZ2', 'XYZ3'],
    'campaign': ['Gen_X_Shoes_TTU_Bing', 'Gen_X_Apparel_TTU_Bing', 'Zen_X_Watch_SKU_Gogl', 'Zen_X_Apparel_SKU_Gogl', 'Gen_Z_Watch_INL_Gogl'],
    'customerid': ['cust123', 'cust123', 'cust456', 'cust456', 'cust567']
}
df = pd.DataFrame(data)

# 2. 拆分Campaign字段,提取prefix、keyword、suffix
target_keywords = ['shoes', 'apparel', 'watch']
def parse_campaign(campaign_str):
    campaign_lower = campaign_str.lower()
    for kw in target_keywords:
        if kw in campaign_lower:
            split_parts = campaign_lower.split(kw)
            prefix = split_parts[0].rstrip('_')
            suffix = split_parts[1].lstrip('_')
            return prefix, kw, suffix
    return None, None, None  # 无匹配关键词的情况可根据需求自定义处理

df[['prefix', 'keyword', 'suffix']] = df['campaign'].apply(lambda x: pd.Series(parse_campaign(x)))

# 3. 转换关键词为优先级数值(数值越小优先级越高)
priority_rank = {'shoes': 1, 'apparel': 2, 'watch': 3}
df['priority'] = df['keyword'].map(priority_rank)

# 4. 分组去重:按指定字段分组,保留优先级最高的记录
df_deduplicated = df.sort_values('priority').groupby(
    ['adverstiser', 'shopid', 'customerid', 'prefix', 'suffix'],
    as_index=False
).first()

# 5. 生成带action字段的最终结果
action_list = ['set', 'ready']
final_df = df_deduplicated.loc[df_deduplicated.index.repeat(len(action_list))].reset_index(drop=True)
final_df['action'] = action_list * len(df_deduplicated)

# 筛选输出字段并打印结果
output_columns = ['adverstiser', 'shopid', 'campaign', 'customerid', 'action']
print(final_df[output_columns].to_string(index=False))

代码输出结果

adverstiser shopid               campaign customerid action
        ABC1   XYZ1   Gen_X_Shoes_TTU_Bing    cust123    set
        ABC1   XYZ1   Gen_X_Shoes_TTU_Bing    cust123  ready
        ABC2   XYZ2 Zen_X_Apparel_SKU_Gogl    cust456    set
        ABC2   XYZ2 Zen_X_Apparel_SKU_Gogl    cust456  ready
        ABC3   XYZ3  Gen_Z_Watch_INL_Gogl    cust567    set
        ABC3   XYZ3  Gen_Z_Watch_INL_Gogl    cust567  ready

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:05:06