如何基于分群用户计数优先级为DataFrame创建Segment Priority新属性列
实现方案(Python Pandas环境)
核心思路
- 第一步:统计所有segment对应的去重客户数量,按数量从小到大给每个segment分配全局权重,数量越少权重值越小
- 第二步:按customerid分组,对该客户下所有segment的权重做升序排名,得到的结果就是
Segment Priority
完整代码
import pandas as pd # 构造原始DataFrame data = { "customerid": [1,1,1,1,2,2,2,3,3,4,5], "segment": ["active","viewed","addtocart","transacted","active","viewed","addtocart","active","viewed","active","active"] } df = pd.DataFrame(data) # 1. 计算每个segment对应的去重客户数,生成权重映射 seg_unique_cnt = df.groupby("segment")["customerid"].nunique().sort_values() seg_weight_map = {seg: idx+1 for idx, seg in enumerate(seg_unique_cnt.index)} df["temp_weight"] = df["segment"].map(seg_weight_map) # 2. 按客户分组生成优先级排名 df["Segment Priority"] = df.groupby("customerid")["temp_weight"].rank(method="first").astype(int) # 删除临时列得到最终结果 df = df.drop("temp_weight", axis=1) print(df)
输出验证
运行上述代码后得到的结果和预期输出完全匹配。
内容的提问来源于stack exchange,提问作者Abbhinav Srivastava
相关产品推荐
相关产品推荐

