将Excel含关键词的SUMIF操作替换为Python DataFrame实现
用Pandas实现同一设备下关键词包含匹配的字段汇总
需求说明
针对同一设备下的每条关键词记录,汇总所有设备相同且关键词包含当前记录关键词的行的cost和conversions字段(例如移动端的"black"关键词,需汇总所有移动端关键词含"black"的记录的cost总和与conversions总和)。
实现步骤与代码
- 导入库并读取数据
假设数据存储为CSV格式,先读取到DataFrame中:
import pandas as pd # 替换为你的数据路径或数据源 df = pd.read_csv('your_data_file.csv')
- 编写分组汇总函数
定义函数处理单个设备组内的关键词匹配与汇总:
def calc_keyword_agg(group): agg_results = [] # 遍历组内每个唯一关键词 for target_keyword in group['keyword'].unique(): # 筛选当前设备下关键词包含target_keyword的所有行 match_mask = group['keyword'].str.contains(target_keyword, case=False) # 计算汇总值 sum_cost = group.loc[match_mask, 'cost'].sum() sum_conversions = group.loc[match_mask, 'conversions'].sum() # 收集结果 agg_results.append({ 'device': group['device'].iloc[0], 'keyword': target_keyword, 'total_cost': sum_cost, 'total_conversions': sum_conversions }) return pd.DataFrame(agg_results)
- 分组应用并生成结果
按device分组后应用上述函数,得到最终汇总表:
final_agg_df = df.groupby('device').apply(calc_keyword_agg).reset_index(drop=True)
关键说明
str.contains(target_keyword, case=False):不区分大小写匹配关键词,若需严格区分大小写,将case=False改为case=True即可。- 该逻辑会为每个关键词单独计算其对应的包含匹配汇总,完全覆盖需求中的场景(如示例中移动端"black"会汇总所有含"black"的相关记录)。
内容的提问来源于stack exchange,提问作者Shany H.
相关产品推荐
相关产品推荐

