列表理解 - 根据变量

时间:2015-09-21 16:24:54

标签: python string filter dataframe list-comprehension

我的数据框是ELA和Math列的汇编。我最终想放弃一个主题'一组列,因为我允许用户输入选择一个主题。

我尝试使用列表推导来为数据框分配具有所选主题名称的任何列。一个细微差别是在ELA和数学选择中有两列应该是恒定的,'熟练类别数学'和#'熟练程度类别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

1 个答案:

答案 0 :(得分:2)

您需要将列的名称与要包含的列的名称进行比较,就像您对subject_selection所做的那样。换句话说,您执行了subject_selection = 'Math',而不是subject_selection = df[['Math Score', 'Math Goal']]。同样,你应该这样做:

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