在推荐或销售场景中,会比较希望知道客户经常会同时购买哪些产品;在风控场景中,会希望知道哪些标签同时出现时客户的风险更高…有兴趣的伙伴可以了解下关联算法。
此处不介绍关联算法,但数据处理中也有类似的情形,对于指定的标签集合{C01,C02,G05}, 如果想要计算包含多个标签的变量与该指定集合的标签交集,该如何处理呢?以下是输入变量及希望的输出结果示例
var | input_var | output_var |
---|---|---|
a | C01,C02,G01,G05 | C01,C02,G05 |
b | C02,G01,G05 | C02,G05 |
c | C02,G01,G03 | C02 |
d | C01,G03,G05,M03 | C01,G05 |
e | G05,M03,M04 | G05 |
f | G03,M03,M04 |
使用集合函数set()即可处理,代码如下
Out: dt
var input_var
0 a C01,C02,G01,G05
1 b C02,G01,G05
2 c C02,G01,G03
3 d C01,G03,G05,M03
4 e G05,M03,M04
5 f G03,M03,M04
In : dt['intsec_'] = dt.apply(lambda x: list(set(x.input_var.split(",")).intersection(['C01','C02','G05'])), axis=1)
Out: dt
var input_var intsec_
0 a C01,C02,G01,G05 [C02, C01, G05]
1 b C02,G01,G05 [C02, G05]
2 c C02,G01,G03 [C02]
3 d C01,G03,G05,M03 [G05, C01]
4 e G05,M03,M04 [G05]
5 f G03,M03,M04 []
In : dt['ouput_var'] = dt['intsec_'].map(lambda x: ','.join(x))
Out: dt
var input_var intsec_ ouput_var
0 a C01,C02,G01,G05 [C02, C01, G05] C02,C01,G05
1 b C02,G01,G05 [C02, G05] C02,G05
2 c C02,G01,G03 [C02] C02
3 d C01,G03,G05,M03 [G05, C01] G05,C01
4 e G05,M03,M04 [G05] G05
5 f G03,M03,M04 []
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)