我有一个熊猫数据框,看起来像这样:
Date
31/8/20 4:56:00
31/8/20 4:45:00
31/8/20 4:39:00
31/8/20 4:36:00
31/8/20 4:34:00
31/8/20 4:05:00
31/8/20 4:04:00
31/8/20 3:19:00
31/8/20 2:54:00
我希望它以15分钟为单位对行进行分组,如果每行属于15分钟的datetime类别,则为每行添加标签。所以我希望我的输出像这样:
Date Interval
31/8/20 4:56:00 Period 1
31/8/20 4:45:00 Period 1
31/8/20 4:39:00 Period 2
31/8/20 4:36:00 Period 2
31/8/20 4:34:00 Period 2
31/8/20 4:05:00 Period 4
31/8/20 4:04:00 Period 4
31/8/20 3:19:00 Period 7
31/8/20 2:54:00 Period 9
如您所见,“时段1”包含31/8/20 4:45-31/8/20 4:59:00之间的所有日期时间。如果该期间没有相应的行条目,则应出现期间间隔。这就是为什么“第四阶段”不是“第三阶段”
我尝试了以下方法:
df = pd.DataFrame()
df = df.sort_values(by=['Date'], ascending=False)
df['Date'] = pd.to_datetime(df['Date'])
df['Interval'] = 'Period ' + (((df.shift()['Date'] - df['Date']).dt.seconds > 900).cumsum() + 1).astype(str)
但是,如果datetime行在上一个datetime行的15分钟内,则在“Interval”列中返回“Period n”
Date Interval
31/8/20 4:56:00 Period 1
31/8/20 4:45:00 Period 2
31/8/20 4:39:00 Period 3
31/8/20 4:36:00 Period 4
31/8/20 4:34:00 Period 5
31/8/20 4:05:00 Period 6
31/8/20 4:04:00 Period 7
31/8/20 3:19:00 Period 8
31/8/20 2:54:00 Period 9
相反,我希望在每一行上标记一个“句点”,而不考虑前面的行datetime,并基于一小时内的四个15分钟间隔,以便根据
先谢谢你
使用频率为} 对} 对每组进行编号:
15min
的^{Grouper
进行编码,然后使用带有可选参数ascending=False
的^{结果:
相关问题 更多 >
编程相关推荐