удаление определенных строк из фрейма данных pandas

#python-3.x #pandas #dataframe

#python-3.x #pandas #фрейм данных

Вопрос:

У меня есть pd.DataFrame, в котором в каждой строке указаны показатели успеваемости учащихся на экзаменах. У каждого учащегося есть уникальный идентификатор, и у каждого учащегося есть уникальная строка для вопросов, которые они решили на экзамене. Например, студент с идентификатором «a1a1» попытался задать два вопроса, тогда как студент с идентификатором «w2e3» попытался задать только один вопрос. (пример df)

введите описание изображения здесь

Я хочу найти студентов, которые пытались решить менее 3 вопросов, и удалить связанные с ними строки из фрейма данных. Как я могу это сделать с помощью методов pd.DataFrame?

Комментарии:

1. problemID — это просто уникальный идентификационный номер для каждой проблемы. Каждая строка представляет собой вопрос, решенный учащимся, поэтому, если вопрос решал три вопроса, у него / нее есть три строки (записи) в этом фрейме данных

Ответ №1:

Использовать value_counts() на studentID

 import pandas as pd

df = pd.DataFrame({'studentID':['a','a','a','b','b','b', 'c'],
                   'problemID':[1,2,3,1,2,3,1]})
print(df)
tmp = df['studentID'].value_counts()
tmp = tmp[tmp >= 3]
new_df = df[df['studentID'].isin(tmp.index)]
print(new_df)
 

Вывод:

   studentID  problemID
0         a          1
1         a          2
2         a          3
3         b          1
4         b          2
5         b          3
6         c          1

  studentID  problemID
0         a          1
1         a          2
2         a          3
3         b          1
4         b          2
5         b          3
 

Комментарии:

1. это просто возвращает к списку, как я могу удалить эти записи из моего исходного фрейма данных

2. Ошибка атрибута: объект ‘builtin_function_or_method’ не имеет атрибута ‘index’

3. Извините, теперь это должно сработать, я немного поторопился

4. Я просто не понимаю, зачем .index это нужно в последней строке

5. tmp Потому что серия имеет имя студентов в качестве индекса и количество решенных задач в качестве значений.