我有以下数据集:
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/