python 使用set()计算变量交集

在推荐或销售场景中,会比较希望知道客户经常会同时购买哪些产品;在风控场景中,会希望知道哪些标签同时出现时客户的风险更高…有兴趣的伙伴可以了解下关联算法。

此处不介绍关联算法,但数据处理中也有类似的情形,对于指定的标签集合{C01,C02,G05}, 如果想要计算包含多个标签的变量与该指定集合的标签交集,该如何处理呢?以下是输入变量及希望的输出结果示例

varinput_varoutput_var
aC01,C02,G01,G05C01,C02,G05
bC02,G01,G05C02,G05
cC02,G01,G03C02
dC01,G03,G05,M03C01,G05
eG05,M03,M04G05
fG03,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               []      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值