假设我正在初始化一个随机的Dataframe:
df = pd.DataFrame(np.random.randint(0,100,size=(100, 10)), columns=list('ABCDEFGHIJ'))
现在,让我们说score(matrix)
是一个函数,它接受数据帧的一个子集并计算得分。
我想找到最大化得分的df
子集。必须包含所有行,但列不需要是连续的。换句话说,我可以使用df
的列创建score()
的子集以传递到df
。
我最初的方法是从第一列开始,然后连接第二列,如果分数增加,则保留列,否则,继续移动到下一列。最后,我希望顶部的x
列最大化得分x<10
。
我觉得我的解决方案仍然无法找到最佳解决方案,因为我总是从第一列开始,它总是在我的解决方案中。但是如果最佳解决方案不包括第一列呢?
根据你对效率的担忧程度,你可以做一个嵌套的for
循环:
for i in range(numberOfColumns):
for j in range(numberOfColumns):
if i == j:
continue
else:
#code
将使用每列(索引i
)作为起始列,然后应用连接/检查每隔一列(索引j
)和跳过j
的方法(如果已经添加)。