在Pandas DataFrame中替换URL内UTM参数的占位符
Pandas替换UTM链接占位符为对应列值
核心思路
先明确UTM模板中占位符与DataFrame列的对应关系,再逐行将占位符替换为对应列的数值。
步骤实现
- 定义示例数据结构
假设你的DataFrame包含CampaignId、AdGroupId、Keyword、Keyword ID列,以及带占位符的UTM模板列:
import pandas as pd data = { "CampaignId": [31757442, 31757443], "AdGroupId": [3745473327, 3745473328], "Keyword": ["CRM", "ERP"], "Keyword ID": [38372916231, 38372916232], "UTM_Template": ["utm_content=keys_{gbid}|cid|{campaign_id}|aid|{keyword}|{phrase_id}|src&utm_term={keyword}"] * 2 } df = pd.DataFrame(data)
- 映射占位符与列名
创建字典,将占位符名称(去掉花括号)对应到DataFrame的列名:
placeholder_map = { "gbid": "AdGroupId", "campaign_id": "CampaignId", "keyword": "Keyword", "phrase_id": "Keyword ID" }
- 编写替换函数并生成结果
利用apply逐行处理,通过字符串格式化替换占位符:
def replace_utm(row): # 构造格式化参数,将列值转为字符串 format_params = {key: str(row[col]) for key, col in placeholder_map.items()} # 替换模板中的占位符 return row["UTM_Template"].format(**format_params) # 生成最终的UTM链接列 df["Final_UTM"] = df.apply(replace_utm, axis=1)
最终效果
运行后df["Final_UTM"]列的结果如下:
- 第一行:
utm_content=keys_3745473327|cid|31757442|aid|CRM|38372916231|src&utm_term=CRM - 第二行:
utm_content=keys_3745473328|cid|31757443|aid|ERP|38372916232|src&utm_term=ERP
注意事项
- 确保占位符名称与
placeholder_map中的键完全匹配,否则无法替换 - 数字类型的列值需转为字符串,避免格式化时出现类型错误
- 若所有行的UTM模板相同,可将模板定义为单独变量,无需存入DataFrame列,提升处理效率
内容的提问来源于stack exchange,提问作者Serg Neverov
相关产品推荐
相关产品推荐

