#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"))