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

如何用Pandas按条件关联数据,评估谷歌广告的销售转化效果?

用Pandas实现广告销售归因分析的解决方案

前提说明

先统一列名(避免空格带来的操作麻烦):

  • Promotion:TrackID, click_datetime
  • Website:TrackID, access_datetime, client_account
  • Sales:client_account, sale, sale_datetime

第一步:为每个销售匹配最近的网站访问记录

你的SQL逻辑存在小问题:max(Website.TrackID)无法正确对应最近访问的TrackID,正确思路是先找到每个销售对应的最晚访问时间,再匹配对应的TrackID。用Pandas实现如下:

  1. 关联Sales和Website,筛选出销售发生前的网站访问记录:
import pandas as pd

# 合并两个DataFrame,保留销售时间之前的访问记录
sales_with_visits = pd.merge(
    Sales,
    Website,
    on='client_account',
    how='left'
).query('access_datetime < sale_datetime')
  1. 为每个销售(按client_account和sale_datetime分组)提取最近的访问记录:
# 按销售维度分组,取每组中访问时间最晚的记录
latest_visits = sales_with_visits.sort_values('access_datetime', ascending=False)\
                                 .groupby(['client_account', 'sale_datetime'])\
                                 .first()\
                                 .reset_index()

# 提取核心字段:销售信息、对应TrackID、最近访问时间
sales_with_latest_track = latest_visits[['client_account', 'sale', 'sale_datetime', 'TrackID', 'access_datetime']]

第二步:关联广告数据,判断销售是否来自广告

将第一步的结果与Promotion关联,筛选出广告点击早于销售的记录,最终得到带销售转化的广告列表:

# 关联广告数据和第一步的归因结果
ad_sales_attribution = pd.merge(
    Promotion,
    sales_with_latest_track,
    on='TrackID',
    how='left'
).query('click_datetime < sale_datetime')

# 整理最终输出:广告TrackID、对应的销售记录及时间信息
final_result = ad_sales_attribution[['TrackID', 'sale', 'sale_datetime', 'click_datetime']]

补充提示

  • 若Sales中的sale无唯一标识,用client_account + sale_datetime分组可确保每个销售对应一条最近访问记录
  • 确保所有时间列都是Pandas的datetime64类型,若不是可通过pd.to_datetime()转换,避免时间比较出错
  • 若TrackID存在重复(理论上应唯一对应广告点击),可根据业务需求调整分组或去重逻辑

内容的提问来源于stack exchange,提问作者FábioRB

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:39:25