Перебор попарных комбинаций столбцов

#python #pandas

Вопрос:

Вот пример фрейма данных:

 d = {'Gender': [1,1,0,1,0], 'Employed': [1,0,0,1,1], 'Name':['Alan', 'Joe', 'Sam', 'Amy',  'Chloe']} d=pd.DataFrame(d)  

Я хотел получить все попарные комбинации столбцов, чтобы я мог передать их в точный тест Фишера:

 from itertools import combinations pairwise_combinations=list(combination(d.columns, 2)) pairwise_combinations=[', '.join(map(str, x)) for x in pairwise_combinations]  

Это дает мне пары в виде:

 Gender, Employed  

Я хочу иметь возможность сказать

 for i in pairwise_combinations:  data=d[[i]]  

На данный момент это дает ошибку, потому что она все еще находится в неправильной форме. Мне нужны кавычки вокруг названий столбцов. Как я могу это сделать?

Комментарии:

1. Формат входных данных непристойный, можно ли каким-либо образом разделить его на ряд объектов с атрибутами до этого?

2. В данном случае вы просто пытаетесь это сделать data = d[['Gender', 'Employed']] ?

Ответ №1:

Если я хорошо понимаю, чего вы хотите, это :

 from itertools import combinations pairwise_combinations = list(combinations(d.columns, 2))  for i in pairwise_combinations:  data = d.loc[:, i]  

Комментарии:

1. @Reti43, спасибо за редактирование кода 🙂

Ответ №2:

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

 gt;gt;gt; for i in zip(d["Gender"],d["Employed"]): print(i)  (1, 1) (1, 0) (0, 0) (1, 1) (0, 1)  

Я не знаю, что именно вам нужно в качестве входных данных для теста Фишера, но это было бы простым решением для получения пар значений в цикле.