如何在使用python选择不同列的循环中增加i
我想知道如何在Python3中创建一个循环来增加I,j,k的值。。。对于特定的应用程序 我需要选择不同的列,但不能自己选择。假设我的dataframe有7列。我将在下面举个例子 这样做的目的是创建如下选择:如何在使用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,
[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]
必须使用intertoolsdf.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]
必须使用intertoolsdf.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,…]]
@Alambeki+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,…]
@Alambeki+2
一直运行到9
,但您的序列只有8个元素。而且it.combines
返回元组,因此您需要转换为list
,以便与iloc
一起使用。