2015-09-21 6 views
0

Мой кадр данных - это сборник столбцов ELA и Math. В конечном итоге я хочу отказаться от одного из столбцов столбцов, поскольку я разрешаю пользователю вводить один объект.List Comprehension - Выбор столбцов на основе переменной

Я пытаюсь использовать представление списка, чтобы назначить кадр данных любым столбцам, у которых есть выбранное имя субъекта. Один нюанс состоит в том, что есть два столбца, которые должны быть постоянными как в ELA, так и в выборе Math, «Категория математики» и «Категория ELA».

Мысли о том, как использовать списки, чтобы справиться с этим?

Вход:

ELA Score Math Score ELA Goal Math Goal Proficiency ELA Proficiency Math 
     1   4   6   7    3     5 

Выход: (с subject_selection = 'Математика')

Math Score Math Goal Proficiency ELA Proficiency Math 
     4   7    3     5 

Мой текущий код:

col_list = df.columns 
    subject_selection = 'Math' ###User types in desired subject 
    x = df['Proficiency Category Math'] 
    y = df['Proficiency Category ELA'] 
    df = [cols for cols in col_list if subject_selection in cols or cols == x or cols == y] 

Ошибка я получаю это:

TypeError: invalid type comparison 
+0

Вы сравниваете имя столбца со значением (которое является int) в строке. – ozgur

+0

если вы напечатаете 'col_list', как это выглядит? (Может ли какая-либо из записей включать в себя строку «Math»?) – jcfollower

+0

@jcfollower col_list должен быть списком имен столбцов в моем фреймворке. Мне интересно, если моя проблема в том, что я использую понимание списка для фильтрации объекта серии? – krisko08

ответ

2

Вам необходимо сравнить имя этого столбца с номером столбцов, которые вы хотите включить, например, вы сделали для subject_selection. Другими словами, вы сделали subject_selection = 'Math', а не subject_selection = df[['Math Score', 'Math Goal']]. Аналогичным образом, вы должны:

x = 'Proficiency Category Math' 
y = 'Proficiency Category ELA' 
+0

Хорошо! Я понимаю эту серьезную проблему. После того, как я исправил это, я не получаю желаемого результата. Я получаю список, возвращаемый только мои переменные x и y. Что-то не так с моим пониманием списка? @BrenBarn – krisko08

+0

@ krisko08: Вам нужно будет предоставить автономный, воспроизводимый пример, демонстрирующий проблему. – BrenBarn