列表理解 - Select 基于变量的列

List Comprehension - Select Columns based on a Variable

我的数据框是 ELA 和 Math 列的汇编。我最终想删除其中一个主题的列集,因为我允许用户输入选择一个主题。

我正在尝试使用列表理解来为数据框分配任何具有所选主题名称的列。一个细微差别是,在 ELA 和数学选择中有两列应该保持不变,'Proficiency Category Math' 和 'Proficiency Category ELA'。

关于如何使用列表理解来完成此操作的想法?

输入:

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

输出:(subject_selection = 'Math')

    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

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

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