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

标签 python pandas numpy dictionary combinations

我有以下数据集:

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

现在,我需要在 Python 中创建一个包含“Company”所有元素对的列表,这些元素对应于“Individual”中的值。

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

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

最佳答案

一种解决方案是使用pandas:

import pandas as pd

d = {'Company':['A','A','A','B','B','B','C','C','C'],'Individual': [1,2,3,1,4,5,3,6,7]}

df = pd.DataFrame(d).groupby('Individual')['Company'].apply(list).reset_index()
companies = df.loc[df['Company'].map(len)>1, 'Company'].tolist()

# [['A', 'B'], ['A', 'C']]

这不是最有效的方法,但可能很直观。

关于python - 根据 Python 数据框中的条件创建包含所有唯一可能组合的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49028675/

相关文章:

python - 在模块期间 - 类型错误 : not all arguments converted during string formatting

python - 在python中从视频导入大量图像的有效方法

python - pandas 对于 value_counts() 中不存在的类别填写 0

python - 扭曲的延迟/回调和异步执行

python - 如何从 Pandas 中的两列创建一个数组

python - 数据框分组和排序

python - 用 Python 封装一个 C 程序,将自定义文件读取到二维数组中

python - Numpy 向后兼容性 : Visual C++ 9 not found

python - 如何同时使用窗口大小裁剪 numpy 数组的每个元素而不循环遍历每个像素?

Python 如果这个和这个和这个