如何在使用python选择不同列的循环中增加i

如何在使用python选择不同列的循环中增加i,python,pandas,loops,increment,Python,Pandas,Loops,Increment,我想知道如何在Python3中创建一个循环来增加I,j,k的值。。。对于特定的应用程序 我需要选择不同的列,但不能自己选择。假设我的dataframe有7列。我将在下面举个例子 这样做的目的是创建如下选择: [0, 1] [0, 2] [0, 3] [0, 4] [0, 5] [0, 6] ... [0, 3, 6] [0, 3, 7] [0, 4, 5] [0, 4, 6] [0, 4, 7] [0, 5, 6] [0, 5, 7] [0, 6, 7] [0, 1, 2, 3] [0, 1,

我想知道如何在Python3中创建一个循环来增加I,j,k的值。。。对于特定的应用程序

我需要选择不同的列,但不能自己选择。假设我的dataframe有7列。我将在下面举个例子

这样做的目的是创建如下选择:

[0, 1]
[0, 2]
[0, 3]
[0, 4]
[0, 5]
[0, 6]
 ...
[0, 3, 6]
[0, 3, 7]
[0, 4, 5]
[0, 4, 6]
[0, 4, 7]
[0, 5, 6]
[0, 5, 7]
[0, 6, 7]
[0, 1, 2, 3]
[0, 1, 2, 4]
[0, 1, 2, 5]
[0, 1, 2, 6]
[0, 1, 2, 7]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 5]
[0, 1, 2, 3, 6]
[0, 1, 2, 3, 7]
 ...
[0, 1, 2, 3, 4, 7]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 7]
[0, 1, 2, 3, 4, 5, 8]
[0, 1, 2, 3, 4, 5, 6, 7]
在一些回复之后,我可以创建以下代码:

from itertools import combinations 
numbers = [] 
A = [0,1,2,3,4,5,6,7] 
for i in range(8): 
   for combo in combinations(A, i+2): 
      numbrs.append(combo)
输出为:

[(0, 1),
 (0, 2),
 (0, 3),
 (0, 4), ...
如何使用这些数字作为iloc迭代器的索引

例如,生成的数字必须替换代码:

df.iloc[:,[i, j, k, ...]]

然后我将能够在列之间进行交互

您可以使用
itertools.compositions
itertools.chain
解决此问题:

import itertools as it

list(it.chain(*(it.combinations(range(8), r) for r in range(2, 9))))
或者,如果您愿意,可以使用列表理解:

[x for r in range(2, 9) for x in it.combinations(range(8), r)] 
这将产生以下输出:

[(0, 1),
 (0, 2),
 (0, 3),
 (0, 4),
 (0, 5),
 (0, 6),
 (0, 7),
 (1, 2),
 (1, 3),
 (1, 4),
 (1, 5),
 (1, 6),
 (1, 7),
 (2, 3),
 (2, 4),
 (2, 5),
 (2, 6),
 (2, 7),
 (3, 4),
 (3, 5),
 (3, 6),
 (3, 7),
 (4, 5),
 (4, 6),
 (4, 7),
 (5, 6),
 (5, 7),
 (6, 7),
 (0, 1, 2),
 (0, 1, 3),
 (0, 1, 4),
 (0, 1, 5),
 (0, 1, 6),
 (0, 1, 7),
 (0, 2, 3),
 (0, 2, 4),
 (0, 2, 5),
 (0, 2, 6),
 (0, 2, 7),
 (0, 3, 4),
 (0, 3, 5),
 (0, 3, 6),
 (0, 3, 7),
 (0, 4, 5),
 (0, 4, 6),
 (0, 4, 7),
 (0, 5, 6),
 (0, 5, 7),
 (0, 6, 7),
 (1, 2, 3),
 (1, 2, 4),
 (1, 2, 5),
 (1, 2, 6),
 (1, 2, 7),
 (1, 3, 4),
 (1, 3, 5),
 (1, 3, 6),
 (1, 3, 7),
 (1, 4, 5),
 (1, 4, 6),
 (1, 4, 7),
 (1, 5, 6),
 (1, 5, 7),
 (1, 6, 7),
 (2, 3, 4),
 (2, 3, 5),
 (2, 3, 6),
 (2, 3, 7),
 (2, 4, 5),
 (2, 4, 6),
 (2, 4, 7),
 (2, 5, 6),
 (2, 5, 7),
 (2, 6, 7),
 (3, 4, 5),
 (3, 4, 6),
 (3, 4, 7),
 (3, 5, 6),
 (3, 5, 7),
 (3, 6, 7),
 (4, 5, 6),
 (4, 5, 7),
 (4, 6, 7),
 (5, 6, 7),
 (0, 1, 2, 3),
 (0, 1, 2, 4),
 (0, 1, 2, 5),
 (0, 1, 2, 6),
 (0, 1, 2, 7),
 (0, 1, 3, 4),
 (0, 1, 3, 5),
 (0, 1, 3, 6),
 (0, 1, 3, 7),
 (0, 1, 4, 5),
 (0, 1, 4, 6),
 (0, 1, 4, 7),
 (0, 1, 5, 6),
 (0, 1, 5, 7),
 (0, 1, 6, 7),
 (0, 2, 3, 4),
 (0, 2, 3, 5),
 (0, 2, 3, 6),
 (0, 2, 3, 7),
 (0, 2, 4, 5),
 (0, 2, 4, 6),
 (0, 2, 4, 7),
 (0, 2, 5, 6),
 (0, 2, 5, 7),
 (0, 2, 6, 7),
 (0, 3, 4, 5),
 (0, 3, 4, 6),
 (0, 3, 4, 7),
 (0, 3, 5, 6),
 (0, 3, 5, 7),
 (0, 3, 6, 7),
 (0, 4, 5, 6),
 (0, 4, 5, 7),
 (0, 4, 6, 7),
 (0, 5, 6, 7),
 (1, 2, 3, 4),
 (1, 2, 3, 5),
 (1, 2, 3, 6),
 (1, 2, 3, 7),
 (1, 2, 4, 5),
 (1, 2, 4, 6),
 (1, 2, 4, 7),
 (1, 2, 5, 6),
 (1, 2, 5, 7),
 (1, 2, 6, 7),
 (1, 3, 4, 5),
 (1, 3, 4, 6),
 (1, 3, 4, 7),
 (1, 3, 5, 6),
 (1, 3, 5, 7),
 (1, 3, 6, 7),
 (1, 4, 5, 6),
 (1, 4, 5, 7),
 (1, 4, 6, 7),
 (1, 5, 6, 7),
 (2, 3, 4, 5),
 (2, 3, 4, 6),
 (2, 3, 4, 7),
 (2, 3, 5, 6),
 (2, 3, 5, 7),
 (2, 3, 6, 7),
 (2, 4, 5, 6),
 (2, 4, 5, 7),
 (2, 4, 6, 7),
 (2, 5, 6, 7),
 (3, 4, 5, 6),
 (3, 4, 5, 7),
 (3, 4, 6, 7),
 (3, 5, 6, 7),
 (4, 5, 6, 7),
 (0, 1, 2, 3, 4),
 (0, 1, 2, 3, 5),
 (0, 1, 2, 3, 6),
 (0, 1, 2, 3, 7),
 (0, 1, 2, 4, 5),
 (0, 1, 2, 4, 6),
 (0, 1, 2, 4, 7),
 (0, 1, 2, 5, 6),
 (0, 1, 2, 5, 7),
 (0, 1, 2, 6, 7),
 (0, 1, 3, 4, 5),
 (0, 1, 3, 4, 6),
 (0, 1, 3, 4, 7),
 (0, 1, 3, 5, 6),
 (0, 1, 3, 5, 7),
 (0, 1, 3, 6, 7),
 (0, 1, 4, 5, 6),
 (0, 1, 4, 5, 7),
 (0, 1, 4, 6, 7),
 (0, 1, 5, 6, 7),
 (0, 2, 3, 4, 5),
 (0, 2, 3, 4, 6),
 (0, 2, 3, 4, 7),
 (0, 2, 3, 5, 6),
 (0, 2, 3, 5, 7),
 (0, 2, 3, 6, 7),
 (0, 2, 4, 5, 6),
 (0, 2, 4, 5, 7),
 (0, 2, 4, 6, 7),
 (0, 2, 5, 6, 7),
 (0, 3, 4, 5, 6),
 (0, 3, 4, 5, 7),
 (0, 3, 4, 6, 7),
 (0, 3, 5, 6, 7),
 (0, 4, 5, 6, 7),
 (1, 2, 3, 4, 5),
 (1, 2, 3, 4, 6),
 (1, 2, 3, 4, 7),
 (1, 2, 3, 5, 6),
 (1, 2, 3, 5, 7),
 (1, 2, 3, 6, 7),
 (1, 2, 4, 5, 6),
 (1, 2, 4, 5, 7),
 (1, 2, 4, 6, 7),
 (1, 2, 5, 6, 7),
 (1, 3, 4, 5, 6),
 (1, 3, 4, 5, 7),
 (1, 3, 4, 6, 7),
 (1, 3, 5, 6, 7),
 (1, 4, 5, 6, 7),
 (2, 3, 4, 5, 6),
 (2, 3, 4, 5, 7),
 (2, 3, 4, 6, 7),
 (2, 3, 5, 6, 7),
 (2, 4, 5, 6, 7),
 (3, 4, 5, 6, 7),
 (0, 1, 2, 3, 4, 5),
 (0, 1, 2, 3, 4, 6),
 (0, 1, 2, 3, 4, 7),
 (0, 1, 2, 3, 5, 6),
 (0, 1, 2, 3, 5, 7),
 (0, 1, 2, 3, 6, 7),
 (0, 1, 2, 4, 5, 6),
 (0, 1, 2, 4, 5, 7),
 (0, 1, 2, 4, 6, 7),
 (0, 1, 2, 5, 6, 7),
 (0, 1, 3, 4, 5, 6),
 (0, 1, 3, 4, 5, 7),
 (0, 1, 3, 4, 6, 7),
 (0, 1, 3, 5, 6, 7),
 (0, 1, 4, 5, 6, 7),
 (0, 2, 3, 4, 5, 6),
 (0, 2, 3, 4, 5, 7),
 (0, 2, 3, 4, 6, 7),
 (0, 2, 3, 5, 6, 7),
 (0, 2, 4, 5, 6, 7),
 (0, 3, 4, 5, 6, 7),
 (1, 2, 3, 4, 5, 6),
 (1, 2, 3, 4, 5, 7),
 (1, 2, 3, 4, 6, 7),
 (1, 2, 3, 5, 6, 7),
 (1, 2, 4, 5, 6, 7),
 (1, 3, 4, 5, 6, 7),
 (2, 3, 4, 5, 6, 7),
 (0, 1, 2, 3, 4, 5, 6),
 (0, 1, 2, 3, 4, 5, 7),
 (0, 1, 2, 3, 4, 6, 7),
 (0, 1, 2, 3, 5, 6, 7),
 (0, 1, 2, 4, 5, 6, 7),
 (0, 1, 3, 4, 5, 6, 7),
 (0, 2, 3, 4, 5, 6, 7),
 (1, 2, 3, 4, 5, 6, 7),
 (0, 1, 2, 3, 4, 5, 6, 7)]

您可以使用
itertools.compositions
itertools.chain
解决此问题:

import itertools as it

list(it.chain(*(it.combinations(range(8), r) for r in range(2, 9))))
或者,如果您愿意,可以使用列表理解:

[x for r in range(2, 9) for x in it.combinations(range(8), r)] 
这将产生以下输出:

[(0, 1),
 (0, 2),
 (0, 3),
 (0, 4),
 (0, 5),
 (0, 6),
 (0, 7),
 (1, 2),
 (1, 3),
 (1, 4),
 (1, 5),
 (1, 6),
 (1, 7),
 (2, 3),
 (2, 4),
 (2, 5),
 (2, 6),
 (2, 7),
 (3, 4),
 (3, 5),
 (3, 6),
 (3, 7),
 (4, 5),
 (4, 6),
 (4, 7),
 (5, 6),
 (5, 7),
 (6, 7),
 (0, 1, 2),
 (0, 1, 3),
 (0, 1, 4),
 (0, 1, 5),
 (0, 1, 6),
 (0, 1, 7),
 (0, 2, 3),
 (0, 2, 4),
 (0, 2, 5),
 (0, 2, 6),
 (0, 2, 7),
 (0, 3, 4),
 (0, 3, 5),
 (0, 3, 6),
 (0, 3, 7),
 (0, 4, 5),
 (0, 4, 6),
 (0, 4, 7),
 (0, 5, 6),
 (0, 5, 7),
 (0, 6, 7),
 (1, 2, 3),
 (1, 2, 4),
 (1, 2, 5),
 (1, 2, 6),
 (1, 2, 7),
 (1, 3, 4),
 (1, 3, 5),
 (1, 3, 6),
 (1, 3, 7),
 (1, 4, 5),
 (1, 4, 6),
 (1, 4, 7),
 (1, 5, 6),
 (1, 5, 7),
 (1, 6, 7),
 (2, 3, 4),
 (2, 3, 5),
 (2, 3, 6),
 (2, 3, 7),
 (2, 4, 5),
 (2, 4, 6),
 (2, 4, 7),
 (2, 5, 6),
 (2, 5, 7),
 (2, 6, 7),
 (3, 4, 5),
 (3, 4, 6),
 (3, 4, 7),
 (3, 5, 6),
 (3, 5, 7),
 (3, 6, 7),
 (4, 5, 6),
 (4, 5, 7),
 (4, 6, 7),
 (5, 6, 7),
 (0, 1, 2, 3),
 (0, 1, 2, 4),
 (0, 1, 2, 5),
 (0, 1, 2, 6),
 (0, 1, 2, 7),
 (0, 1, 3, 4),
 (0, 1, 3, 5),
 (0, 1, 3, 6),
 (0, 1, 3, 7),
 (0, 1, 4, 5),
 (0, 1, 4, 6),
 (0, 1, 4, 7),
 (0, 1, 5, 6),
 (0, 1, 5, 7),
 (0, 1, 6, 7),
 (0, 2, 3, 4),
 (0, 2, 3, 5),
 (0, 2, 3, 6),
 (0, 2, 3, 7),
 (0, 2, 4, 5),
 (0, 2, 4, 6),
 (0, 2, 4, 7),
 (0, 2, 5, 6),
 (0, 2, 5, 7),
 (0, 2, 6, 7),
 (0, 3, 4, 5),
 (0, 3, 4, 6),
 (0, 3, 4, 7),
 (0, 3, 5, 6),
 (0, 3, 5, 7),
 (0, 3, 6, 7),
 (0, 4, 5, 6),
 (0, 4, 5, 7),
 (0, 4, 6, 7),
 (0, 5, 6, 7),
 (1, 2, 3, 4),
 (1, 2, 3, 5),
 (1, 2, 3, 6),
 (1, 2, 3, 7),
 (1, 2, 4, 5),
 (1, 2, 4, 6),
 (1, 2, 4, 7),
 (1, 2, 5, 6),
 (1, 2, 5, 7),
 (1, 2, 6, 7),
 (1, 3, 4, 5),
 (1, 3, 4, 6),
 (1, 3, 4, 7),
 (1, 3, 5, 6),
 (1, 3, 5, 7),
 (1, 3, 6, 7),
 (1, 4, 5, 6),
 (1, 4, 5, 7),
 (1, 4, 6, 7),
 (1, 5, 6, 7),
 (2, 3, 4, 5),
 (2, 3, 4, 6),
 (2, 3, 4, 7),
 (2, 3, 5, 6),
 (2, 3, 5, 7),
 (2, 3, 6, 7),
 (2, 4, 5, 6),
 (2, 4, 5, 7),
 (2, 4, 6, 7),
 (2, 5, 6, 7),
 (3, 4, 5, 6),
 (3, 4, 5, 7),
 (3, 4, 6, 7),
 (3, 5, 6, 7),
 (4, 5, 6, 7),
 (0, 1, 2, 3, 4),
 (0, 1, 2, 3, 5),
 (0, 1, 2, 3, 6),
 (0, 1, 2, 3, 7),
 (0, 1, 2, 4, 5),
 (0, 1, 2, 4, 6),
 (0, 1, 2, 4, 7),
 (0, 1, 2, 5, 6),
 (0, 1, 2, 5, 7),
 (0, 1, 2, 6, 7),
 (0, 1, 3, 4, 5),
 (0, 1, 3, 4, 6),
 (0, 1, 3, 4, 7),
 (0, 1, 3, 5, 6),
 (0, 1, 3, 5, 7),
 (0, 1, 3, 6, 7),
 (0, 1, 4, 5, 6),
 (0, 1, 4, 5, 7),
 (0, 1, 4, 6, 7),
 (0, 1, 5, 6, 7),
 (0, 2, 3, 4, 5),
 (0, 2, 3, 4, 6),
 (0, 2, 3, 4, 7),
 (0, 2, 3, 5, 6),
 (0, 2, 3, 5, 7),
 (0, 2, 3, 6, 7),
 (0, 2, 4, 5, 6),
 (0, 2, 4, 5, 7),
 (0, 2, 4, 6, 7),
 (0, 2, 5, 6, 7),
 (0, 3, 4, 5, 6),
 (0, 3, 4, 5, 7),
 (0, 3, 4, 6, 7),
 (0, 3, 5, 6, 7),
 (0, 4, 5, 6, 7),
 (1, 2, 3, 4, 5),
 (1, 2, 3, 4, 6),
 (1, 2, 3, 4, 7),
 (1, 2, 3, 5, 6),
 (1, 2, 3, 5, 7),
 (1, 2, 3, 6, 7),
 (1, 2, 4, 5, 6),
 (1, 2, 4, 5, 7),
 (1, 2, 4, 6, 7),
 (1, 2, 5, 6, 7),
 (1, 3, 4, 5, 6),
 (1, 3, 4, 5, 7),
 (1, 3, 4, 6, 7),
 (1, 3, 5, 6, 7),
 (1, 4, 5, 6, 7),
 (2, 3, 4, 5, 6),
 (2, 3, 4, 5, 7),
 (2, 3, 4, 6, 7),
 (2, 3, 5, 6, 7),
 (2, 4, 5, 6, 7),
 (3, 4, 5, 6, 7),
 (0, 1, 2, 3, 4, 5),
 (0, 1, 2, 3, 4, 6),
 (0, 1, 2, 3, 4, 7),
 (0, 1, 2, 3, 5, 6),
 (0, 1, 2, 3, 5, 7),
 (0, 1, 2, 3, 6, 7),
 (0, 1, 2, 4, 5, 6),
 (0, 1, 2, 4, 5, 7),
 (0, 1, 2, 4, 6, 7),
 (0, 1, 2, 5, 6, 7),
 (0, 1, 3, 4, 5, 6),
 (0, 1, 3, 4, 5, 7),
 (0, 1, 3, 4, 6, 7),
 (0, 1, 3, 5, 6, 7),
 (0, 1, 4, 5, 6, 7),
 (0, 2, 3, 4, 5, 6),
 (0, 2, 3, 4, 5, 7),
 (0, 2, 3, 4, 6, 7),
 (0, 2, 3, 5, 6, 7),
 (0, 2, 4, 5, 6, 7),
 (0, 3, 4, 5, 6, 7),
 (1, 2, 3, 4, 5, 6),
 (1, 2, 3, 4, 5, 7),
 (1, 2, 3, 4, 6, 7),
 (1, 2, 3, 5, 6, 7),
 (1, 2, 4, 5, 6, 7),
 (1, 3, 4, 5, 6, 7),
 (2, 3, 4, 5, 6, 7),
 (0, 1, 2, 3, 4, 5, 6),
 (0, 1, 2, 3, 4, 5, 7),
 (0, 1, 2, 3, 4, 6, 7),
 (0, 1, 2, 3, 5, 6, 7),
 (0, 1, 2, 4, 5, 6, 7),
 (0, 1, 3, 4, 5, 6, 7),
 (0, 2, 3, 4, 5, 6, 7),
 (1, 2, 3, 4, 5, 6, 7),
 (0, 1, 2, 3, 4, 5, 6, 7)]

与不同的
r
长度一起使用(例如
范围(2,列数+1)
不清楚您想要做什么,但这听起来很像
itertools.compositions
的工作。谢谢,我想把我提到的方括号内的数字打印出来。@Alambek logic,如果您有[1,2]。。。。[17]为什么没有[1,2,3]…[1,2,7]数据帧的索引
df.iloc[:,[0,1,2,3]
必须使用intertools
df.iloc[:,[i,j,k,…]生成的i,j,k来访问。
使用不同的
r
长度(例如
范围(2,列数+1)
itertools.compositions你想做什么还不太清楚,但这听起来很像是itertools.compositions的工作。谢谢你,我想把我提到的方括号内的数字打印出来。@Alambek logic,如果你有[1,2]…[17]为什么没有[1,2,3]…[1,2,7]数据框的索引
df.iloc[:,[0,1,2,3]
必须使用intertools
df.iloc[:,[i,j,k,…]]生成的i,j,k…访问;
感谢您的回复;我正在使用以下代码:
从itertools导入组合编号=[]A=[0,1,2,3,4,5,6,7]对于范围(8)中的i:for combo in compositions(A,i+2):numbers.append(combo)
但是现在我无法运行用iloc命令生成的数字。就像这样:
df.iloc[:,[I,j,k,…]]
@Alambek
i+2
运行到
9
,但您的序列只有8个元素。而且
it.combinations
返回元组,因此您需要转换为
list
,以便与
iloc
一起使用。感谢您的回复;我正在使用以下代码:
来自itertools的导入组合编号=[]A=[0,1,2,3,4,5,6,7]对于范围内的i(8):对于组合中的combo(A,i+2):numbers.append(combo)
但是现在我无法运行用iloc命令生成的数字。这样:
df.iloc[:,[i,j,k,…]
@Alambek
i+2
一直运行到
9
,但您的序列只有8个元素。而且
it.combines
返回元组,因此您需要转换为
list
,以便与
iloc
一起使用。