【发布时间】:2022-01-14 18:56:09
【问题描述】:
我正在应对一个艰巨的挑战,但我不知道如何解决它。
我有一个这样的数据框:
Product_Name Start_Time End_Time
Product X 2021-10-20 20:32:00 2021-10-21 03:50:00
Product Y 2021-10-21 11:50:00 2021-10-21 16:00:00
Product Z 2022-01-11 20:10:00 2022-01-12 15:30:00
我有 3 个范围时间和一个类别:
A: 05:01 to 14:00
B: 14:01 to 22:00
C: 22:01 to 05:00
我想要做的是根据“Start_Time”和“End_Time”计算每个类别(A、B 和 C)有多少小数小时,达到如下所示:
Product_Name Start_Time End_Time A B C
Product X 2021-10-20 20:30:00 2021-10-21 03:50:00 0.00 1.50 5.82
Product Y 2021-10-21 11:50:00 2021-10-21 16:00:00 2.17 1.98 0.00
Product Z 2022-01-11 20:10:00 2022-01-12 15:30:00 8.98 3.31 6.98
你们能帮我怎么做吗?
我是 python、pandas 等方面的真正初学者,当我第一次写这篇文章时,我真的不知道如何开始编写代码。 所以我开始思考一些事情,我得到了这个代码,我确定它不正确,但我认为这是一个开始:
start_a = 05:01:00
end_a = 14:00:00
start_b = 14:01:00
end_b = 22:00:00
start_c = 22:01:00
end_c = 05:00:00
if df['Start_Time'] > start_a and df['End_Time'] < end_a:
df['A'] = ( df['End_Time'] - start_a ) - ( end_a - df['Start_Time'] )
else:
df['A'] = 0
if df['Start_Time'] > start_b and df['End_Time'] < end_b:
df['B'] = ( df['End_Time'] - start_b ) - ( end_b - df['Start_Time'] )
else:
df['B'] = 0
if df['Start_Time'] > start_c and df['End_Time'] < end_c:
df['C'] = ( df['End_Time'] - start_c ) - ( end_c - df['Start_Time'] )
else:
df['C'] = 0
【问题讨论】:
标签: python pandas date datetime