使用Python进入持续时间/会话的时间

时间:2017-05-10 12:48:49

标签: python pandas

我有1个带有日期和时间的pandas数据框。我想在早上下午,晚上,晚上再添加一个名为session的列。

   Time
   2016-07-10 01:18:00
   2016-07-10 11:21:00
   2016-07-10 17:29:00
   2016-07-10 21:43:00

我想输出

   Time                     Session
   2016-07-10 01:18:00      Night
   2016-07-10 11:21:00      Morning
   2016-07-10 17:29:00      Afternoon
   2016-07-10 21:43:00      Evening

怎么做?

我通过定义中断

来尝试这个
00:00 - 06:00 Night
06:00 - 12:00 Morning
12:00 - 18:00 Afternoon
18:00 -23:59 Evening


df.Time[(df.Time.dt.hour < 6) | (df.Time.dt.hour > 0) | (df.Time.dt.minute < 59) | (df.Time.dt.minute > 0)] = "Night"

但它不能正常工作。提前致谢

1 个答案:

答案 0 :(得分:7)

使用pd.cut为会话标签创建容器。

df.assign(session=pd.cut(df.Time.dt.hour,[0,6,12,18,24],labels=['Night','Morning','Afternoon','Evening']))

输出:

                 Time    session
0 2016-07-10 01:18:00      Night
1 2016-07-10 11:21:00    Morning
2 2016-07-10 17:29:00  Afternoon
3 2016-07-10 21:43:00    Evening