首页 > 解决方案 > 根据数据中的当前组合创建一种数据框列的笛卡尔积

问题描述

目前我正在处理产品数据(来自网上商店),这些产品具有分层类别结构(类别 1、2、3),其中 3 是“最具体的类别”(想想:足球鞋 (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, C, B,D, B,E.

我希望很清楚:)

PS:有人可以解释我如何将“数据帧块”添加到 StackOverflow 问题,而不是像这样的字典吗?

标签: pythoncombinationscartesian-product

解决方案


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

或者,如果您想计算组合:

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


推荐阅读