有没有办法将 24 小时时间格式转换为一天的四个类别或四个象限?

2022-01-11 00:00:00 python python-3.x pandas time-series

问题描述

我正在尝试将数据中的时间戳预处理为一天中的四个类别.

I am trying to pre-process timestamp in my data into four categories of the day.

这意味着我需要将对象数据类型转换为类别

This means i need to convert object data type to categories namely

早上 00:00:00 到 11:59:59

Morning for 00:00:00 to 11:59:59

下午 12:00:00 至 15:59:59

Afternoon for 12:00:00 to 15:59:59

晚上 16:00:00 至 19:59:59

Evening for 16:00:00 to 19:59:59

晚上 20:00:00 至 23:59:59

Night for 20:00:00 to 23:59:59

我的时间戳数据看起来像

my timestamp data looks like

transaction timestamp
08:26:00
08:26:00
08:26:00
08:26:00
12:26:00
12:45:00
16:26:00
16:28:00
20:28:00
20:34:00

我希望上述列的输出为

time of day
Morning
Morning
Morning
Morning
Afternoon
Afternoon
Evening
Evening
Night
Night

我应该如何清理这种类型的数据并将其转换为仅 4 个类别?

How shall i clean this type of data and convert it to just 4 categories?


解决方案

您可以通过 to_timedelta 然后使用 cut:

You can convert values to timedeltas by to_timedelta and then use cut:

df['transaction timestamp'] = pd.to_timedelta(df['transaction timestamp'])
#if values are python object times convert to strings
#df['transaction timestamp'] = pd.to_timedelta(df['transaction timestamp'].astype(str))

b = pd.to_timedelta(['00:00:00','12:00:00','16:00:00','20:00:00', '24:00:00'])
l = ['Morning','Afternoon','Evening','Night']
df['time of day'] = pd.cut(df['transaction timestamp'], bins=b, labels=l)

print (df)
  transaction timestamp time of day
0              08:26:00     Morning
1              08:26:00     Morning
2              08:26:00     Morning
3              08:26:00     Morning
4              12:26:00   Afternoon
5              12:45:00   Afternoon
6              16:26:00     Evening
7              16:28:00     Evening
8              20:28:00       Night
9              20:34:00       Night

相关文章