【发布时间】:2019-11-21 23:48:31
【问题描述】:
我有 370 列,我必须生成 2、3 和 4 列的独特组合。但是,我需要在组合上应用这些条件(首先参见下表和我需要在下面应用的条件)
My columns are named in this fashion
Column 1 Name : 'Real'
Column 2 Name : 'Real_lag1'
Column 3 Name : 'Real_lag2'
Column 4 Name : 'Real_lag3'
Column 5 Name : 'Real_lag4'
Column 6 Name : 'Normal'
Column 7 Name : 'Normal_chng'
Column 9 Name : 'Normal_diff'
Column 10 Name : 'Andi_diff'
Column 11 Name : 'Vari_lag1'
Column 12 Name : 'Teo_diff'
Column 13 Name : 'Lan_diff'
.
.
.
.
基本上我有 24 个唯一值,这些值已经滞后,总共转换为 370 个变量(如上所示)等。例如,您可以看到 _lag _chng、_diff 都是 24 个唯一列的转换(如“Real” ,'Normal', 'Andi', 'Vari', 'Teo, 'Lan' 等等)
我想生成这 370 个变量的唯一组合,但是只有一个变量可以来自父变量。
例如,“Real”和“Real_lag1”不能一起出现在组合中。
如果尝试运行所有组合(使用 370),总共有 776,741,925 个组合(一次 2 个,一次 3 个,一次 4 个)并对此应用条件将花费大量时间运行这个
【问题讨论】:
-
这看起来像是数学和编码问题的结合。要生成可能的组合,您可能需要查看itertools.combinations。基于 24 个独特的组,组合 2/3/4 个元素。
-
是的。我认为这样做的一种方法是将 370 个变量分组到父变量下),然后从每个父变量中选择一个。但是我该怎么做呢?
-
两位家长:
parents2 = list(itertools.combinations(np.arange(24),2))。这将创建一个父组合列表。相应地适应 3/4 的父母。然后对于每对/三/四的父母,检查每组中的所有组合。itertools是你的朋友。
标签: python python-3.x pandas jupyter-notebook