基于双字段匹配合并行:合并同源sessionSource的activeUsers数据
合并同源sessionSource的用户数据解决方案
核心思路
- 将同源的
sessionSource统一命名(比如把l.instagram.com替换为instagram.com) - 按
sessionSource和dateRange分组,对activeUsers字段求和 - (可选)调整结果的显示顺序,匹配预期输出的排列
代码实现(基于Pandas)
先构造你的原始数据(如果是从文件读取,替换成pd.read_csv()等方法即可):
import pandas as pd # 构造原始数据 data = { 'sessionSource': ['snapchat.com', 'snapchat.com', 'l.instagram.com', 'l.instagram.com', 'instagram.com', 'instagram.com'], 'dateRange': ['previous', 'current', 'previous', 'current', 'previous', 'current'], 'activeUsers': [1, 1, 71, 23, 5, 0] } df = pd.DataFrame(data)
接下来执行合并操作:
# 定义同源来源的映射规则,可根据需求扩展 source_mapping = { 'l.instagram.com': 'instagram.com' } # 替换sessionSource字段,未在映射中的值保持不变 df['sessionSource'] = df['sessionSource'].replace(source_mapping) # 按来源和时段分组,求和活跃用户数 merged_df = df.groupby(['sessionSource', 'dateRange'], as_index=False)['activeUsers'].sum() # 调整结果顺序,和示例输出一致 merged_df = merged_df.set_index('sessionSource').loc[['snapchat.com', 'instagram.com']].reset_index() # 查看最终结果 print(merged_df)
输出结果
执行后会得到你期望的结果:
sessionSource dateRange activeUsers 0 snapchat.com previous 1 1 snapchat.com current 1 2 instagram.com previous 76 3 instagram.com current 23
扩展说明
如果后续有更多同源来源需要合并(比如m.instagram.com),只需在source_mapping字典中添加对应关系即可,例如:
source_mapping = { 'l.instagram.com': 'instagram.com', 'm.instagram.com': 'instagram.com' }
内容的提问来源于stack exchange,提问作者Omar
相关产品推荐
相关产品推荐

