【发布时间】:2018-09-11 16:52:44
【问题描述】:
我想在某些条件下生成所有可能的组合。鉴于我有一个包含我需要的条件的数据框。
Variable Cluster_no sub_group
GDP_M3 1 GDP
HPI_M3_lg2 1 HPI
FDI_C_lg5 1 FDI
FDI_M6 2 FDI
Export_M9 2 Export
GDP_M9 2 GDP
GDP_M12_lg7 3 GDP
Export_M12 3 Export
我发现 itertools.combinations 给了我所有可能的组合 3 例如。但是,我想考虑使用cluster_no 和sub_group 的更多标准。
话虽如此,如果我从cluster 1 开始以GDP_M3 开头,它不会与HPI_M3_lg2 或FDI_C_lg5 匹配,因为它来自同一个集群。给定集群条件,它将寻找其他集群,即cluster 2 或cluster 3。
在cluster 2 中,有两个可能的变量,即FDI_M6 或Export_M9,因为我也想考虑sub_group 条件。如果选择FDI_M6,它将移动到下一个集群,因为每个集群只允许一个变量。
目前,我的名单是[GDP_M3, FDI_M6]。组合的下一个变量是Export_M12,因为它来自cluster 3 和sub_group Export。
我想设置最多 3 种可能的组合(1 到 3)。对此有任何建议。
谢谢。
编辑以添加我的代码。
N=3
combination=[]
for i in range(1, N+1):
for j in itertools.combinations(a, i):
combination.append(list(j))
【问题讨论】:
-
如果您可以向我们提供您尝试过的代码,那就很清楚了
-
为什么不对变量本身进行组合,将每个集群中的组合数作为属于该变量的集群的唯一值?用你需要的所有条件迭代一个 for 循环
-
@NiteyaShah 因为我需要与其他集群的变量组合。如果我在每个集群中进行组合,GDP_M3 将无法与 Export_M12 匹配。
-
我的意思是嵌套的 for 循环,即 for i in var1: for j in var2 if(i==j): pass
-
@Netwave 已修改
标签: python combinations