python 使用set

python 使用set,第1张

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

此处不介绍关联算法,但数据处理中也有类似的情形,对于指定的标签集合{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               []      

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/922709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存