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



我在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']中得到这些输入的所有可能组合。或者我应该使用其他的数据结构吗?如for 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

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

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"')]

最新更新