动态编程-查找得分最高的列

时间:2019-03-31 07:22:14

标签: python pandas algorithm dynamic-programming

假设我正在这样初始化一个随机数据框:

df = pd.DataFrame(np.random.randint(0,100,size=(100, 10)), columns=list('ABCDEFGHIJ'))

现在,假设score(matrix)是一个函数,它获取数据帧的子集并计算得分。

我想找到最大化分数的df的子集。所有行都必须包括在内,但各列不必是连续的。换句话说,我可以创建df的子集以仅使用score()的列传递到df中。

我的最初方法是从第一列开始,然后连接第二列,如果得分增加,则保留该列,否则继续移动到下一列。 最后,我希望排名最高的x列在x<10处得分最高。

我觉得我的解决方案仍然找不到最佳的解决方案,因为由于我总是从第一列开始,所以它将始终存在于我的解决方案中。但是,如果最佳解决方案不包含第一列怎么办?

1 个答案:

答案 0 :(得分:0)

根据您对效率的担心程度,您可以执行以下嵌套for循环:

for i in range(numberOfColumns):
   for j in range(numberOfColumns):
      if i == j:
         continue
      else: 
         #code

,它将使用每列(索引i)作为起始列,然后应用连接/检查其他每列(索引j)的方法,并跳过j(如果已经存在)已添加。