Все перестановки, где 0/1 добавляются в каждый столбец строки данных - PullRequest
0 голосов
/ 01 февраля 2019

Для каждой строки моего фрейма данных (например, A 1 2 3 4 5) я хочу сгенерировать все возможные 2 ^ 5 перестановок строк, где 0 или 1 были добавлены в каждый столбец, без дубликатов.

т.е. я хочусгенерируйте все перестановки длины 5 из [0,1], например, [1,0,0,0,0], [0,1,0,0,0], [1,1,0,0,0] в качестве векторов, затем добавьте их в эту строку.

Требуемый вывод для приведенного выше примера:

A 2 2 3 4 5  <<only first column added>>
A 1 3 3 4 5  <<only second column added>>
A 2 3 3 4 5  <<first and second columns added>>

1 Ответ

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

Вы можете использовать пакет itertools для генерации всех возможных комбинаций: itertools.product создает итерацию, которую вы можете привести к списку, а затем Dataframe (предложения по предотвращению приведения очень приветствуются)

x = pd.DataFrame(list((itertools.product([0, 1], repeat=5))))
x.head()
Out[46]: 
    0  1  2  3  4
0   0  0  0  0  0
1   0  0  0  0  1
2   0  0  0  1  0
3   0  0  0  1  1
4   0  0  1  0  0
5   0  0  1  0  1
6   0  0  1  1  0
7   0  0  1  1  1

на следующем шаге вы можете просто добавить свой список в каждую строку кадра данных

comb = x + [1,2,3,4,5]
comb.head()
Out[47]: 
    0  1  2  3  4
0   1  2  3  4  5
1   1  2  3  4  6
2   1  2  3  5  5
3   1  2  3  5  6
4   1  2  4  4  5
5   1  2  4  4  6
6   1  2  4  5  5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...