根据数据中的当前组合,创建一种数据框列的笛卡尔积

Create a sort of Cartesian product of dataframe columns, based on the present combinations in the data

目前我正在处理产品数据(来自网上商店),这些产品具有分层类别结构(类别 1、2、3),其中 3 是 'most specific category'(想想:足球鞋(1)、人造草鞋 (2)、阿迪达斯 (3))。

由于数据集包含超过 25000 个条目,我开始寻找一种方法来创建一种可以告诉我以下信息的映射: 数据中存在 1,2,3(或仅 1,2)的哪些可能组合?我的意思并不是说 所有可能的组合 ,而只是那些存在于数据中的组合。

我很快就用itertools得出了笛卡尔积。然而,我旁边的运行变成了memory error,我相信itertools(以及笛卡尔积的思想)是让1,2,3的所有可能组合(而不仅仅是那些实际存在的)。

考虑以下数据框:

    df = pd.DataFrame({'Product ID': [1,2,3,4], 'Category 1': ['A','B','B','B'], 'Category 2':['C', 'D', 'D', 'E']}) 

所以在这种情况下,我希望看到以下输出: A, CB,DB,E

我希望清楚:)

PS:有人可以解释我如何将 'Dataframe blocks' 添加到 Whosebug 问题,而不是像这样的字典吗?

(df['Category 1'] + df['Category 2']).unique()

或者如果你想计算组合数:

(df['Category 1'] + df['Category 2']).value_counts()