Как увеличить i в цикле для использования Python, чтобы выбрать другой столбец - PullRequest
0 голосов
/ 02 февраля 2019

Я хотел бы знать, как можно было бы создать цикл для в Python 3, чтобы увеличить значения 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, ...]]

Тогда я смогу взаимодействовать между колоннами

1 Ответ

0 голосов
/ 02 февраля 2019

Вы можете решить эту проблему, используя itertools.combinations и 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)]
...