Начинающий 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
(Кстати, я знаю о дубликатах, но я знаю, как позаботиться об этом.) Этот фреймворк - это всего лишь пример, и этот метод должен работать на dataframes с любым количеством назначений и учеников. Я не знаю, как это сделать. Помогите :(
Вот один из способов с .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