加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

根据Python中数据框中的条件创建包含所有唯一可能组合的列表

发布时间:2020-12-20 11:02:40 所属栏目:Python 来源:网络整理
导读:我有以下数据集: d = {'Company':['A','A','B','C','D','D'],'Individual': [1,2,3,4,1,5,6,7,8,9,10,11,12,13]} 现在,我需要在Python中创建一个“公司”元素对的列表,它们对应于“个人”中的值. 例如.对于上面的数据集,上面的输出应如下所示: ((A,B),(A,C
我有以下数据集:

d = {
'Company':['A','A','B','C','D','D'],'Individual': [1,2,3,4,1,5,6,7,8,9,10,11,12,13]
}

现在,我需要在Python中创建一个“公司”元素对的列表,它们对应于“个人”中的值.

例如.对于上面的数据集,上面的输出应如下所示:
((A,B),(A,C),(B,(C,D)).前三个元组,因为个人1隶属于A,B和C,最后一个属于个人10隶属于C和D.

进一步说明 –
如果个体= 1,则上述数据集具有“A”,“B”和“C”值.现在,我想创建这三个值(元组)的所有唯一组合,因此它应该创建一个包含元组(A,C)和(B,C)的列表.接下来是个人= 2.这里只有值’A’,因此没有元组可以附加到列表中.对于下一个人,每个人只有一个相应的公司,因此没有进一步的配对.必须添加的唯一其他元组是Individual = 10,因为它具有值’C’和’D’ – 因此应该将元组(C,D)添加到列表中.

解决方法

以下是您提炼问题的解决方案:

from collections import defaultdict
from itertools import combinations

data = {'Company':['A',13]}

d = defaultdict(set)

for i,j in zip(data['Individual'],data['Company']):
    d[i].add(j)

res = {k: sorted(map(sorted,combinations(v,2))) for k,v in d.items()}

# {1: [['A','B'],['A','C'],['B','C']],#  2: [],#  3: [],#  4: [],#  5: [],#  6: [],#  7: [],#  8: [],#  9: [],#  10: [['C','D']],#  11: [],#  12: [],#  13: []}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读