#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)
Я не знаю, что именно вам нужно в качестве входных данных для теста Фишера, но это было бы простым решением для получения пар значений в цикле.