Как извлечь строки из фрейма данных на основе значений, специфичных для столбца, с помощью python

#python #pandas #group-by #pandas-groupby

#python #pandas #группировка по #pandas-groupby

Вопрос:

В настоящее время у меня огромный набор данных, и ниже показан очень маленький образец. Что я хочу сделать, это извлечь строки на основе столбца сдвига и найти максимальное значение из столбца оценки для последних 3 строк каждой смены, а затем извлечь всю эту строку в новый фрейм данных.

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

Например: для каждого дня есть две смены (дневная и ночная), и для каждой смены я хочу найти максимальный балл за последние 3 строки каждой смены (например: для 26 июня, дневная смена> я хочу найти максимальный балл за последние 3 балла дневной смены,26 июня. Я не хочу брать максимальную оценку каждой смены и извлекать эту строку) и извлекать всю эту строку и устанавливать ее в новый фрейм данных. Я хочу делать это для каждого дня в обе смены.

Ожидаемый вывод фрейма данных приведен ниже:

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

Я попытался решить эту проблему с помощью groupby. Но я не знаю, как найти максимальное значение из столбца score, просто учитывая, что каждый сдвиг имеет последние 3 значения оценки. Я сделал это с учетом максимального балла за всю смену.

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

1. Пожалуйста, предоставьте образцы данных в виде текста, а не изображения.

Ответ №1:

Чтобы получить последние 3 балла, используйте groupby и tail . Чтобы получить максимальное значение, выполните сортировку по score и drop_duplicates :

 df.groupby(["Date", "Shift"]).tail(3)
  .sort_values("score")
  .drop_duplicates(["Date","Shift"], keep="last"))