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

Posted

技术标签:

【中文标题】有没有办法将 24 小时时间格式转换为一天的四个类别或四个象限?【英文标题】:Is there a way to convert 24hour time format into four categories or four quadrants of the day? 【发布时间】:2019-12-12 05:22:41 【问题描述】:

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

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

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

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

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

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

我的时间戳数据看起来像

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 个类别?

【问题讨论】:

如果解决方案仍有问题,请告诉我。 是的,我无法为我的数据实现这一点,这令人困惑。您提到的解决方案可以通过定义每个 bin 大小来单独分类。这里很困难,因为它的时间。如何处理描述时间的对象数据? 尝试将它们转换为时间增量。 我试过data_clean['time_of_day(hh:mm:ss)'].map(lambda x: pd.to_timedelta(x)).......好吧,现在它工作了..在这之后? 【参考方案1】:

您可以通过to_timedelta 将值转换为时间增量,然后使用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

【讨论】:

以上是关于有没有办法将 24 小时时间格式转换为一天的四个类别或四个象限?的主要内容,如果未能解决你的问题,请参考以下文章

检索不到一天的行

Google将工作时间设置为秒

将整数转换为24小时格式C ++

1080p的摄像头做监控传输数字信号一天的数据量是多大

将 Twitter 时间转换为特定格式的日期时间,以计算一天的推文频率

Pandas - Python 2.7:如何将时间序列索引转换为一天中的秒数?