首页 > 解决方案 > 给定一个时间戳列,我怎样才能间隔两个小时并显示在一个新列中?

问题描述

我有一个时间戳列,如:

2018-03-24 11:23:48,
2017-06-23 16:53:16,
2017-06-23 15:24:37

范围是从早上 7 点到下午 5 点,我想创建一个列来说明时间戳属于哪个时段(从早上 7 点开始的 2 小时时段)。

我尝试了各种功能,比如 Pandas。石斑鱼但导致错误。

department_wise.groupby(pd.TimeGrouper(freq='2H')).count()

但它说

TypeError:仅对 DatetimeIndex、TimedeltaIndex 或 PeriodIndex 有效,但获得了“Int64Index”的实例

我想要的实际结果是这样的:

2018-03-24 11:23:48 this should fall into 9:01-11:00 slot
2017-06-23 15:24:37 this should fall into 15:01-17:00 slot. etc.

如果有人有其他方法。请告诉我。

标签: pythonpandasdatetimetimestamp

解决方案


dt = ['2018-03-24 11:23:48',
      '2017-06-23 16:53:16',
      '2017-06-23 15:24:37']

df = pd.DataFrame({'date': dt}, dtype='datetime64[ns]')

bins=[x for x in range(7, 18, 2)]
labels=['(7-9]', '(9-11]', '(11-13]', '(13-15]', '(15-17]']

df['window'] = pd.cut(x=df.date.dt.hour, bins=bins, include_lowest=True, labels=labels)

在此处输入图像描述

  • 顺便说一句,(7-9]= 07:00-08:59。(or)意思是包容性和[or]是排斥性的。

推荐阅读