首页 > 解决方案 > 有没有办法在 Pandas 中删除具有特定条件的重复行?

问题描述

我有一个包含一些重叠时间行的数据框(df)。我想删除持续时间较长的行,保留同一 ID 中持续时间较短的行。(减少重叠)

    starttime                  endtime                      ID      Diff

    1/7/2020 2:32:15 PM        1/7/2020 2:32:16 PM          A       1 sec
    1/8/2020 2:33:20 PM        1/8/2020 2:33:22 PM          B       2 sec
    1/9/2020 5:35:00 AM        1/9/2020 5:35:25 AM          C       25 sec
    1/9/2020 5:35:05 AM        1/9/2020 5:35:25 AM          C       20 sec

我想要以下结果:

    starttime                  endtime                      ID      Diff

    1/7/2020 2:32:15 PM        1/7/2020 2:32:16 PM          A       1 sec
    1/8/2020 2:33:20 PM        1/8/2020 2:33:22 PM          B       2 sec
    1/9/2020 5:35:05 AM        1/9/2020 5:35:25 AM          C       20 sec

请注意,C 组的第一行被删除,因为持续时间比 C 组的第一行长。

这是我的代码:

        import numpy as np
        import pandas as pd

        subset = df[df['diff'] >=  )
        df.drop(subset, inplace = True)

我的困境是我不知道如何正确编写正确的代码来删除较长持续时间的行。(保留持续时间较短的行)我对此进行了研究并提出了上述代码。任何帮助表示赞赏。

标签: pythonpandasnumpyduplicates

解决方案


sort_values然后使用drop_duplicates

df.sort_values(['ID', 'Diff']).drop_duplicates(subset=['ID'])

输出:

             starttime              endtime ID  Diff
0  1/7/2020 2:32:15 PM  1/7/2020 2:32:16 PM  A     1
1  1/8/2020 2:33:20 PM  1/8/2020 2:33:22 PM  B     2
3  1/9/2020 5:35:05 AM  1/9/2020 5:35:25 AM  C    20

推荐阅读