基于Pandas实现每5分钟时间窗口内重复ID去重的技术求助
解决Pandas中固定5分钟时间窗口内重复ID的移除问题
嗨,咱们来搞定这个用Pandas清理数据的需求吧——移除固定5分钟时间窗口内的重复ID,下面的步骤完全贴合你的预期结果:
步骤1:合并日期与时间为完整的datetime列
首先得把Date和Time两列合并成Pandas能识别的datetime类型,这是处理时间窗口的基础:
import pandas as pd # 假设你的数据集存储在名为df的DataFrame中 df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'])
步骤2:生成固定5分钟窗口的标记
用dt.floor('5min')方法把每条记录的时间向下取整到最近的5分钟起始点,这样同一个5分钟窗口内的所有记录会拥有相同的窗口标记:
df['5min_window'] = df['datetime'].dt.floor('5min')
举个例子:2012-01-01 00:01:00和2012-01-01 00:04:30都会被归到2012-01-01 00:00:00这个窗口,而2012-01-01 00:05:10则会被分到2012-01-01 00:05:00窗口。
步骤3:按ID和窗口分组,保留每组第一条记录
现在我们按ID和5min_window分组,每组只保留第一条记录——这样每个5分钟窗口内,同一个ID只会留下第一次出现的那条:
result_df = df.groupby(['ID', '5min_window'], as_index=False).first()
步骤4:整理输出结果(可选)
如果不需要中间生成的datetime和5min_window列,可以删掉它们,只保留你需要的原始列:
result_df = result_df[['ID', 'Date', 'Time']]
处理完之后,得到的结果就和你给出的示例完全一致啦:
- ID12在
00:00:00窗口内的两条记录只保留00:01:00的那条 - ID13在
00:00:00窗口内仅一条记录,直接保留 - ID12在
00:05:00窗口的00:05:10记录保留 - ID12在
00:10:00窗口的00:10:00记录保留
内容的提问来源于stack exchange,提问作者siddharth shinde
相关产品推荐
相关产品推荐

