Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 识别数据帧中的重叠事件(日期时间记录)_Python_Pandas_Dataframe_Datetime_Python Datetime - Fatal编程技术网

Python 识别数据帧中的重叠事件(日期时间记录)

Python 识别数据帧中的重叠事件(日期时间记录),python,pandas,dataframe,datetime,python-datetime,Python,Pandas,Dataframe,Datetime,Python Datetime,我很难在数据集中检测重叠的start\u datetime和end\u datetime 当前,我的数据集如下所示 但我正试着去 生成数据集的原始代码 有没有一种方法(高效或低效)可以在不对列进行排序的情况下检测重叠?Numpy广播 Numpy广播 import pandas as pd df = pd.DataFrame({ 'start_datetime':[ '2000-01-01 02:23:49', '1997-12-20 07:22:10', '2000-

我很难在数据集中检测重叠的
start\u datetime
end\u datetime

当前,我的数据集如下所示

但我正试着去

生成数据集的原始代码 有没有一种方法(高效或低效)可以在不对列进行排序的情况下检测重叠?

Numpy广播
Numpy广播
import pandas as pd
df = pd.DataFrame({
    'start_datetime':[
        '2000-01-01 02:23:49', '1997-12-20 07:22:10', '2000-01-05 03:42:29', '2002-02-25 17:20:09', '1999-06-30 03:33:20',
    ],
    'end_datetime':[
        '2000-01-06 04:50:20', '1998-12-20 01:24:12', '2000-03-01 11:01:11', '2003-02-25 22:05:02', '2000-01-01 02:50:30',
    ],
    
})
df['start_datetime'] = pd.to_datetime(df['start_datetime'])
df['end_datetime'] = pd.to_datetime(df['end_datetime'])
df
s, e = df[['start_datetime', 'end_datetime']].to_numpy().T
m1 = (s[:, None] > s) & (s[:, None] < e) # Check if start time overlap
m2 = (e[:, None] < e) & (e[:, None] > s) # Check if ending time overlap

df['overlap'] = (m1 | m2).any(1)
>>> df

       start_datetime        end_datetime  overlap
0 2000-01-01 02:23:49 2000-01-06 04:50:20     True
1 1997-12-20 07:22:10 1998-12-20 01:24:12    False
2 2000-01-05 03:42:29 2000-03-01 11:01:11     True
3 2002-02-25 17:20:09 2003-02-25 22:05:02    False
4 1999-06-30 03:33:20 2000-01-01 02:50:30     True