python中超集的小列表的所有可能性

时间:2014-03-21 09:15:45

标签: python pandas

我在python中有这个csv文件,可以作为数据帧读取。

SHOP_ID, COST, ITEM
1, 2.00, A
1, 1.25, B
1, 2.00, C
1, 1.00, D
1, 1.00, "A,B"
1, 1.50, "A,C"
1, 2.50, "A,D"

现在假设用户输入A,B,C,D然后我想要数据帧['ITEM']中此输入的所有可能组合。或者我应该使用任何其他数据结构。 例如,对于A,B,C,D -

combination1    A    B    C    D
combination2    A    A,B  A,C  A,D
combination3    A    B    A,C  A,D
combination4    A    B    C    A,D
combination5    A,B  A,C  A,D

1 个答案:

答案 0 :(得分:0)

所有可能的组合?如果你有一个大型数据集,那就太多了。如果你想这样做,它是可行的,例如,如果你想让它包含ABCD

In [8]:

df['ITEM']
Out[8]:
0        A
1        B
2        C
3        D
4    "A,B"
5    "A,C"
6    "A,D"
Name: ITEM, dtype: object
In [12]:

[item for item in itertools.combinations(df['ITEM'], 4) if set(''.join(item)).issuperset({'A','B','C','D'})]
Out[12]:
[('A', 'B', 'C', 'D'),
 ('A', 'B', 'C', '"A,D"'),
 ('A', 'B', 'D', '"A,C"'),
 ('A', 'B', '"A,C"', '"A,D"'),
 ('A', 'C', 'D', '"A,B"'),
 ('A', 'C', '"A,B"', '"A,D"'),
 ('A', 'D', '"A,B"', '"A,C"'),
 ('A', '"A,B"', '"A,C"', '"A,D"'),
 ('B', 'C', 'D', '"A,B"'),
 ('B', 'C', 'D', '"A,C"'),
 ('B', 'C', 'D', '"A,D"'),
 ('B', 'C', '"A,B"', '"A,D"'),
 ('B', 'C', '"A,C"', '"A,D"'),
 ('B', 'D', '"A,B"', '"A,C"'),
 ('B', 'D', '"A,C"', '"A,D"'),
 ('B', '"A,B"', '"A,C"', '"A,D"'),
 ('C', 'D', '"A,B"', '"A,C"'),
 ('C', 'D', '"A,B"', '"A,D"'),
 ('C', '"A,B"', '"A,C"', '"A,D"'),
 ('D', '"A,B"', '"A,C"', '"A,D"')]