我在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
答案 0 :(得分:0)
所有可能的组合?如果你有一个大型数据集,那就太多了。如果你想这样做,它是可行的,例如,如果你想让它包含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"')]