【发布时间】:2018-07-19 15:22:10
【问题描述】:
我有以下数据集,我希望将一些自定义逻辑应用于:
data = pd.DataFrame({'ID': ['A','B','B','C','C','D','D'],
'Date': ['2018-07-02T02:21:12.000+0000','2018-07-02T02:28:29.000+0000','2018-07-02T02:28:31.000+0000','2018-07-02T02:30:58.000+0000','2018-07-02T02:31:01.000+0000','2018-07-02T02:42:46.000+0000','2018-07-02T02:41:47.000+0000'],
'Action': ['Start','Start','Start','Stop','Stop','Start','Start'],
'Group': [5,13,13,19,19,2,2],
'Value': [100,110,110,95,95,280,280]
})
第 1:2、3:4 和 5:6 行都是相同的,只是“日期”列中的值相差几秒钟。如果 1) 相似行之间的“日期”时间增量小于 1 分钟,并且 2) 所有其他信息都相同,有没有办法删除重复项?
结果应如下所示:
result = pd.DataFrame({
'ID': ['A','B','C','D'],
'Date': ['2018-07-02T02:21:12.000+0000','2018-07-02T02:28:29.000+0000','2018-07-02T02:30:58.000+0000','2018-07-02T02:42:46.000+0000'],
'Action': ['Start','Start','Stop','Start'],
'Group': [5,13,19,2],
'Value': [100,110,95,280]
})
【问题讨论】:
-
这可能不明确。假设您在 2 分钟内有多行。您选择按哪个 1 分钟时段分组?
-
jpp 提出了一个很好的观点。我提供的解决方案是级联的,这意味着如果您在 59 秒内进行 10 次测量,您仍然只保留第一次测量,并考虑其他 9 次重复。也许这就是您想要的,但如果不是,您将需要执行一些其他类型的分桶。如果每个组只有 2 个日期,那真的不是问题。
标签: python pandas drop-duplicates