擅长:python、mysql、java
<p>我认为你需要先创建一个项目的组合。在</p>
<p><a href="https://stackoverflow.com/questions/464864/how-to-get-all-possible-combinations-of-a-list-s-elements">How to get all possible combinations of a list’s elements?</a></p>
<p>我使用了danh的答案中的函数。在</p>
<pre><code>from itertools import chain, combinations
def all_subsets(ss):
return chain(*map(lambda x: combinations(ss, x), range(0, len(ss)+1)))
uq_items = df.Item.unique()
list(all_subsets(uq_items))
[(),
('Shirt1',),
('Shirt2',),
('Shorts1',),
('Shirt1', 'Shirt2'),
('Shirt1', 'Shorts1'),
('Shirt2', 'Shorts1'),
('Shirt1', 'Shirt2', 'Shorts1')]
</code></pre>
<p>并使用<code>groupby</code>每个客户获得他们的项目组合。在</p>
^{pr2}$
<p>然后转换为<code>Series</code>并使用<code>value_counts()</code>。在</p>
<pre><code>pd.Series(np.concatenate(ls)).value_counts()
(Shirt1, Shorts1) 2
(Shirt2, Shorts1) 1
(Shirt1, Shirt2, Shorts1) 1
(Shirt1, Shirt2) 1
</code></pre>