python - 有没有办法在 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)
我的困境是我不知道如何正确编写正确的代码来删除较长持续时间的行。(保留持续时间较短的行)我对此进行了研究并提出了上述代码。任何帮助表示赞赏。
解决方案
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
推荐阅读
- angularjs - Highchart 扩展 x 轴,然后更新 y 轴数据
- java - 菜单弹出时面板缺少重叠部分
- facebook - 如何在 facebook 网络信使而不是信使应用程序上共享链接
- amazon-web-services - 如何在 AWS ElastiCache 上访问 redis 日志
- c++ - 带有非类型名最后一个 arg 的模板参数重载
- adobe-analytics - Adobe Analytics - 使用时间戳问题设置的 PurchaseID
- c# - 有没有更有效的方法来使用!=?
- angular - 如何从 RadAutoCompleteTextView 中清除选定的值
- java - 使用 JDBC 从 Jira 插件连接到 SQL Server DB
- python - 如何使用第一个字段作为标签,从具有 3 个字段的模型中创建 Django 表单,其余的作为单选检查?