python - 根据数据中的当前组合创建一种数据框列的笛卡尔积
问题描述
目前我正在处理产品数据(来自网上商店),这些产品具有分层类别结构(类别 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 问题,而不是像这样的字典吗?
解决方案
(df['Category 1'] + df['Category 2']).unique()
或者,如果您想计算组合:
(df['Category 1'] + df['Category 2']).value_counts()
推荐阅读
- switch-statement - 如何避免使用结构化文本在 CCW 中的案例标签中使用文字?
- nativescript - 获取生成视图的高度
- azure - 带有 Web API 和本机应用程序的 Azure ADAL
- aws-lambda - 聚合不同时间范围内的时间序列数据
- python - 字符串 == 不工作
- tensorflow - keras TimeDistributed 层包装了一个 Lambda 层,其中有多个不同大小的输入
- python - TypeError:不支持的操作数类型 *:python 中的“datetime.timedelta”和“float”
- git - 将代码添加到现有存储库
- javascript - AJAX 调用 - 收到通知:未定义索引
- http - HTTP 1.1 标头值的格式是什么?