如何使用python基于特定于列的值从dataframe提取行

如何使用python基于特定于列的值从dataframe提取行,python,pandas,group-by,pandas-groupby,Python,Pandas,Group By,Pandas Groupby,目前,我有一个巨大的数据集,下面是一个非常小的示例。我要做的是基于shift列提取行,并从score列中为每个班次的最后3行找到最大值,然后将整行提取到新的数据帧中 例如:每天有两个班次(白天和晚上),对于每个班次,我想找到每个班次最后3行的最大得分(例如:对于6月26日白班>我想从6月26日白班的最后3个分数中找到最大分数。我不想取每个班次的最大分数并提取该行)然后提取整行并将其设置为新的数据帧。我想每天两班都这样做 预期的数据帧输出如下所示: 我试着用groupby来解决这个问题。但是我

目前,我有一个巨大的数据集,下面是一个非常小的示例。我要做的是基于shift列提取行,并从score列中为每个班次的最后3行找到最大值,然后将整行提取到新的数据帧中

例如:每天有两个班次(白天和晚上),对于每个班次,我想找到每个班次最后3行的最大得分(例如:对于6月26日白班>我想从6月26日白班的最后3个分数中找到最大分数。我不想取每个班次的最大分数并提取该行)然后提取整行并将其设置为新的数据帧。我想每天两班都这样做

预期的数据帧输出如下所示:


我试着用groupby来解决这个问题。但是我不知道如何从分数中找到最大值,只考虑每个班次的最后3个分数值。我考虑了整个班次的最大分数。

要得到最后3个分数,请使用
groupby
tail
ain最大值,按
分数排序
删除重复项

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

请提供文本而非图片形式的样本数据。