如何在python中分配时间戳并分配标签

时间:2018-05-21 05:59:14

标签: python pandas datetime binning

这是我的数据框:

ID : A, B, C, D, ...
Time: 2:44PM, 3:23AM, 5:00PM, 12:00AM, ...

我想要做的是将时间分类为以下内容:

12:00AM to 6:00AM: 0 
6:00AM to 12:00PM: 1 
12:00PM to 6:00PM: 2 
6:00PM to 12:00AM: 3

所以输出必须是:

ID: A, B, C, D, ...
T_flag: 2, 0, 2, 3, ...

我尝试过使用pd.cut和其他方法,但由于我是Python的初学者,我无法通过任何方法找到所需的结果。

1 个答案:

答案 0 :(得分:1)

由于您希望根据小时来分组数据,最简单的方法是首先转换为24小时格式,然后使用pd.cut

df = pd.DataFrame({'ID': ['A', 'B', 'C', 'D'], 'Time': ['2:44PM', '3:23AM', '5:00PM', '12:00AM']})

df['Time'] = pd.to_datetime(df['Time'], format='%I:%M%p').dt.hour
df['T_flag'] = pd.cut(df['Time'], bins=np.array([-1,0,6,12,18,24]), labels=[3,0,1,2,3])

这将给出:

ID  Time  T_flag
A    14        2
B     3        0
C    17        2
D     0        3

第一个(-1,0] bin是将12:00 AM转换为标签3所必需的。将此值转换为datetime将给出0,默认情况下会为其赋予标签0(第一个bin (-1,6]include_lowest=True)。