Python 熊猫计算datetime之间的持续时间,但不考虑特定的时间范围

Python 熊猫计算datetime之间的持续时间,但不考虑特定的时间范围,python,pandas,datetime,Python,Pandas,Datetime,为清楚起见,这里是MRE: df = pd.DataFrame( {"id":[1,2,3,4], "start_time":["2020-06-01 01:00:00", "2020-06-01 01:00:00", "2020-06-01 19:00:00", "2020-06-02 04:00:00"], "end_time":["2020-06-01 14:00:00", "2020-06-01 18:00:00", "2020-06-02 10:00:00", "

为清楚起见,这里是MRE:

df = pd.DataFrame(
    {"id":[1,2,3,4],
   "start_time":["2020-06-01 01:00:00", "2020-06-01 01:00:00", "2020-06-01 19:00:00", "2020-06-02 04:00:00"], 
   "end_time":["2020-06-01 14:00:00", "2020-06-01 18:00:00", "2020-06-02 10:00:00", "2020-06-02 16:00:00"]
    })
df["start_time"] = pd.to_datetime(df["start_time"])
df["end_time"]   = pd.to_datetime(df["end_time"])
df["sub_time"] = df["end_time"] - df["start_time"]
这将产生:

    id    start_time               end_time              sub_time
0   1   2020-06-01 01:00:00   2020-06-01 14:00:00        13:00:00
1   2   2020-06-01 01:00:00   2020-06-01 18:00:00        17:00:00
2   3   2020-06-01 19:00:00   2020-06-02 10:00:00        15:00:00
3   4   2020-06-02 04:00:00   2020-06-02 16:00:00        12:00:00
但当开始时间~结束时间包含时间范围00:00:00~03:59:59am时,我希望忽略它(不以子时间计算)

因此,与上面的输出不同,我将得到:

    id    start_time               end_time              sub_time
0   1   2020-06-01 01:00:00   2020-06-01 14:00:00        10:00:00
1   2   2020-06-01 01:00:00   2020-06-01 18:00:00        14:00:00
2   3   2020-06-01 19:00:00   2020-06-02 10:00:00        11:00:00
3   4   2020-06-02 04:00:00   2020-06-02 16:00:00        12:00:00
第0行:从01:00:00开始直到04:00:00才计算。那么04:00:00~14:00:00就是10个小时

第2行:考虑时间从19:0:0:24:00和04:0:0:10:0:00,我们得到11:00在亚时间栏中。

有什么建议吗