有没有办法将 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 小时时间格式转换为一天的四个类别或四个象限?的主要内容,如果未能解决你的问题,请参考以下文章