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

python中超集中的小列表的所有可能性,python,pandas,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-- 所有可能的组合?如果你有一个大的数据集,将会有太多的数据集。如果您想这样做,它是可

我有一个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--


所有可能的组合?如果你有一个大的数据集,将会有太多的数据集。如果您想这样做,它是可行的,例如,如果您想让它包含
A
B
C
D

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

不清楚您希望如何生成这些排列(即,最终结果是什么)。如果您为较小的列表(例如,仅3项)提供完整的排列集,则可能会有所帮助。另外,请看一看-其中有一些有用的组合函数(例如,
置换
对于C,B,D,它将是=[(C+B+D),(C+a,B+a,D),(C+B+a,D),(a,B+a,C+a,D)]…因此,您可以看到列表的四个元素中的每一个都有C、B和D。因此,生成的列表将至少包含
C
B
D
,可能还包含其他值?
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"')]