【问题标题】:How to extract rows from dataframe based on column specific values using python如何使用python根据列特定值从数据框中提取行
【发布时间】:2020-10-21 17:51:58
【问题描述】:

目前,我有一个庞大的数据集,下面显示了一个非常小的样本。我想要做的是根据 shift 列提取行,​​并从 score 列中找到 每个班次的最后 3 行 的最大值和然后将整行提取到一个新的数据框。

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

预期的数据帧输出如下:

我尝试使用 groupby 解决此问题。但我不知道如何从 score 列中找到最大值仅考虑每个班次的最后 3 个分值。我这样做是考虑到整个班次的最高分。

【问题讨论】:

  • 请以文字而非图片的形式提供示例数据。

标签: python pandas group-by pandas-groupby


【解决方案1】:

要获得最后 3 分,请使用 groupbytail。要获得最大值,请按scoredrop_duplicates 排序:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 2017-06-26
    • 1970-01-01
    • 2022-10-26
    • 2012-04-22
    相关资源
    最近更新 更多