python - 如何在根据时差条件保留记录的同时删除重复项?
问题描述
我有以下熊猫数据框df
:
Datetime NewDatetime Value
2020-03-24 09:00 2020-03-24 12:00 10
2020-03-24 09:00 2020-03-24 13:00 11
2020-03-24 09:00 2020-03-24 14:00 10
2020-03-24 09:00 2020-03-24 15:00 12
2020-03-24 10:00 2020-03-24 12:00 10
2020-03-24 10:00 2020-03-24 13:00 11
2020-03-24 10:00 2020-03-24 14:00 11
2020-03-24 10:00 2020-03-24 15:00 12
2020-03-24 11:00 2020-03-24 12:00 10
2020-03-24 11:00 2020-03-24 13:00 16
2020-03-24 11:00 2020-03-24 14:00 11
2020-03-24 11:00 2020-03-24 15:00 12
2020-03-24 12:00 2020-03-24 12:00 12
2020-03-24 12:00 2020-03-24 13:00 13
2020-03-24 12:00 2020-03-24 14:00 11
2020-03-24 12:00 2020-03-24 15:00 15
我需要删除重复项NewDatetime
并保留这些记录的时间差等于NewDatetime
或Datetime
等于 3 小时。
这是预期的结果:
Datetime NewDatetime Value
2020-03-24 09:00 2020-03-24 12:00 10
2020-03-24 10:00 2020-03-24 13:00 11
2020-03-24 11:00 2020-03-24 14:00 11
2020-03-24 12:00 2020-03-24 15:00 15
我该怎么做?
我知道如何删除重复项并保留最后的记录,但不确定如何添加时差条件:
df.drop_duplicates(["NewDatetime"], keep='last')
解决方案
尝试:
df['Datetime']=pd.to_datetime(df['Datetime'])
df['NewDatetime']=pd.to_datetime(df['NewDatetime'])
#ensure that both columns are of datetime dtype
然后:
m=((df['NewDatetime']-df['Datetime']).dt.total_seconds()/3600).eq(3)
#check your condition If the difference between these 2 is equal to 3 hrs or not
最后:
df[m]
#OR
df.loc[m]
#passed the condition
推荐阅读
- c# - 如何使用来自 API 的数据重构数据库连接方法 - c#
- r - 如何删除不包括否定的标点符号?
- asp.net-core - 我想通过 Ajax call butt 调用控制器我如何使用 JQUERY-UNOBTRUSIVE 而不使用表单标签
- reactjs - [错误]: {"code":"7","message":"No ssrResources.json file"} 部署 SSR Next Js 应用程序时 ~ AMPLIFY
- javascript - 为什么一次播放所有声音而不是一次播放一个?
- blazor - 设置字符串 Blazor WebAssembly 的最大长度限制
- ios - 摆脱辅助功能检查器中的“不支持动态文本字体大小”警告
- text - 应用于 SAPUI5 表的 OData 值(颜色)
- apache-superset - 根据apache超集中的连接类型配置多个队列
- git - git 合并冲突:哪个提交是共同祖先?