我在使用我创建的数据框架时遇到了一点困难。数据框架是用来记录每天的起床时间、第一餐、最后一餐(这里是第二餐)和睡觉时间(睡眠时间)。
在附件中,您可以看到初始 Dataframe 的样子:
Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5
0 2022-09-06 08:03:00 12:09:00 20:19:00 22:35:00
1 2022-09-07 07:30:00 12:20:00 20:35:00 00:10:00
2 2022-09-08 08:30:00 12:15:00 21:30:00 00:33:00
3 2022-09-09 08:56:00 11:00:00 23:00:00 02:00:00
我使用以下命令将列转换为日期时间
test['Date'] = pd.to_datetime(df['Unnamed: 1'])
对于第一列和
test['WakeUp'] = pd.to_datetime(df['Unnamed: 2'], format='%H:%M:%S')
对于其余部分(不能使用与第一列相同的代码行,否则会出现错误),并获得以下内容:
Date WakeUp 1stMeal 2ndMeal Sleep
0 2022-09-06 1900-01-01 08:03:00 1900-01-01 12:09:00 1900-01-01 20:19:00 1900-01-01 22:35:00
1 2022-09-07 1900-01-01 07:30:00 1900-01-01 12:20:00 1900-01-01 20:35:00 1900-01-01 00:10:00
2 2022-09-08 1900-01-01 08:30:00 1900-01-01 12:15:00 1900-01-01 21:30:00 1900-01-01 00:33:00
3 2022-09-09 1900-01-01 08:56:00 1900-01-01 11:00:00 1900-01-01 23:00:00 1900-01-01 02:00:00
我的问题是,我希望唤醒,第一餐,第二餐和睡眠的日期与日期列相同,但我没有设法做到这一点。
此外,如果时间超过00:00,我希望更改日期,以便显示第二天而不是同一天(即,我在第1天的7:00起床,但在第2天的2:00睡觉)
我曾试图提取时间并独立使用它们,但没有成功(我不确定如何操纵它们)。
我试着用途:
pd.to_datetime(test['Date'].dt.date) + pd.to_datetime(test['WakeUp'].dt.time)
但没有成功。
我原以为睡眠时间不会因为日期的不同而有那么大的差距...
我在网上找到的所有帮助都是人们使用带有日期和/或时间的 Dataframe ,但作为x轴,而从不作为y轴,这慢慢地让人认为没有解决方案...
2条答案
按热度按时间gev0vcfq1#
您可以在使用
to_datetime
之前将第一列与另一列连接起来,然后单独转换第一列:输出:
纠正睡眠
输出:
wgx48brx2#
这个问题的第二部分有点棘手,需要上下文知识来解决。不能保证睡觉时间是第二天。为什么02:00是第二天,而22:00不是?除非你知道没有人会保持那么长时间的清醒,否则没有办法判断。一个实用的方法是检查一个合理的时间(比如10:00),如果睡觉时间在这个时间之前,你可以使用https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.tseries.offsets.DateOffset.html在日期上加上一天