Python初学者在这里!我试图创建一个简单的程序来评分学生(在丹麦评分系统中,我知道它很奇怪)。所以这是我的数据框,其中包含学生及每个作业的成绩,我希望能够在作业列中搜索不需要的值。我想要保留的值是12,10,7,4,2,0和-3。
StudentID Name Assignment1 Assignment2 Assignment3
0 s123456 Michael Andersen 7 7 4
1 s123789 Bettina Petersen 12 11 10
2 s123468 Thomas Nielsen -3 7 2
3 s123579 Marie Hansen 0 2 2
4 s123588 Amalie Jensen 10 5 7
5 s123588 Amalie Jensen 10 7 7
6 s123540 Helena Bentsen 10 10 12
7 s123019 Bent Knudsen 4 4 4
8 s123019 Mattias Kjeldsen 4 4 20
9 s120079 Robert Madsen 4 7 10
10 s129834 Robert Madsen 12 12 12
11 s120068 Camilla Madsen 7 7 10
具有不需要的值的行应显示如下:
StudentID Name Assignment1 Assignment2 Assignment3
1 s123789 Bettina Petersen 12 11 10
4 s123588 Amalie Jensen 10 5 7
8 s123019 Mattias Kjeldsen 4 4 20
(顺便说一句,我知道重复的内容,但我知道如何照顾它。) 这个数据框只是一个例子,该方法应该适用于具有任意数量的任务和学生的数据框。我不知道如何继续。帮助:(
答案 0 :(得分:1)
这是.isin
的一种方式。步骤进行:
df[asmt_cols].isin(values_to_keep)
。df[asmt_cols].isin(values_to_keep).all(1)
。~
取消并过滤。values_to_keep = [12, 10, 7, 4, 2, 0, -3]
asmt_cols = [c for c in df.columns if c.startswith("Assignment")]
unwanted = df[~df[asmt_cols].isin(values_to_keep).all(1)]
# Out[99]:
# StudentID Name Assignment1 Assignment2 Assignment3
# 1 s123789 Bettina Petersen 12 11 10
# 4 s123588 Amalie Jensen 10 5 7
# 8 s123019 Mattias Kjeldsen 4 4 20