假设我正在这样初始化一个随机数据框:
df = pd.DataFrame(np.random.randint(0,100,size=(100, 10)), columns=list('ABCDEFGHIJ'))
现在,假设score(matrix)
是一个函数,它获取数据帧的子集并计算得分。
我想找到最大化分数的df
的子集。所有行都必须包括在内,但各列不必是连续的。换句话说,我可以创建df
的子集以仅使用score()
的列传递到df
中。
我的最初方法是从第一列开始,然后连接第二列,如果得分增加,则保留该列,否则继续移动到下一列。 最后,我希望排名最高的x
列在x<10
处得分最高。
我觉得我的解决方案仍然找不到最佳的解决方案,因为由于我总是从第一列开始,所以它将始终存在于我的解决方案中。但是,如果最佳解决方案不包含第一列怎么办?
答案 0 :(得分:0)
根据您对效率的担心程度,您可以执行以下嵌套for
循环:
for i in range(numberOfColumns):
for j in range(numberOfColumns):
if i == j:
continue
else:
#code
,它将使用每列(索引i
)作为起始列,然后应用连接/检查其他每列(索引j
)的方法,并跳过j
(如果已经存在)已添加。