Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.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_Series - Fatal编程技术网

Python 将一系列间隔与自身进行比较

Python 将一系列间隔与自身进行比较,python,pandas,series,Python,Pandas,Series,为了一系列 我想检查每一个间隔对,比如一个,是否重叠。因为这提供了方法 结果应该是一系列长度l的矩阵/数据帧,包含对是否重叠。例如: +--------------------------+--------------------------+--------------------------+--------------------------+ | | [2020-01-01, 2020-01-05] | [2020-01-01, 2020

为了一系列

我想检查每一个间隔对,比如一个,是否重叠。因为这提供了方法

结果应该是一系列长度
l
的矩阵/数据帧,包含对是否重叠。例如:

+--------------------------+--------------------------+--------------------------+--------------------------+ | | [2020-01-01, 2020-01-05] | [2020-01-01, 2020-01-02] | [2020-01-04, 2020-01-05] | +--------------------------+--------------------------+--------------------------+--------------------------+ | [2020-01-01, 2020-01-05] | True | True | True | +--------------------------+--------------------------+--------------------------+--------------------------+ | [2020-01-01, 2020-01-02] | True | True | False | +--------------------------+--------------------------+--------------------------+--------------------------+ | [2020-01-04, 2020-01-05] | True | False | False | +--------------------------+--------------------------+--------------------------+--------------------------+ +--------------------------+--------------------------+--------------------------+--------------------------+ | | [2020-01-01, 2020-01-05] | [2020-01-01, 2020-01-02] | [2020-01-04, 2020-01-05] | +--------------------------+--------------------------+--------------------------+--------------------------+ |[2020-01-012020-01-05]|对|对|对| +--------------------------+--------------------------+--------------------------+--------------------------+ |[2020-01-012020-01-02]|真|真|假| +--------------------------+--------------------------+--------------------------+--------------------------+ |[2020-01-042020-01-05]|真|假|假| +--------------------------+--------------------------+--------------------------+--------------------------+ 因为这个系列相当大,我正在寻找一种比它更高效的方法

您可以使用,以便能够轻松获得
右侧
左侧
边界,并使用numpy和
更大的

您似乎还可以在IntervalIndex上使用,并执行以下操作:

np.stack([idx.overlaps(interval) for interval in idx])
#or for dataframe
pd.DataFrame([idx.overlaps(interval) for interval in idx], 
             index=s.values, columns=s.values)
import numpy as np

#work with IntervalIndex
idx = pd.IntervalIndex(s)
#get right and left bounds
right = idx.right
left = idx.left

#create the boolean of True and False
arr = np.greater_equal.outer(right, left) & np.less_equal.outer(left, right)

#create the dataframe if needed
print (pd.DataFrame(arr, index=s.values, columns=s.values))
                          [2020-01-01, 2020-01-05]  [2020-01-01, 2020-01-02]  \
[2020-01-01, 2020-01-05]                      True                      True   
[2020-01-01, 2020-01-02]                      True                      True   
[2020-01-04, 2020-01-05]                      True                     False   

                          [2020-01-04, 2020-01-05]  
[2020-01-01, 2020-01-05]                      True  
[2020-01-01, 2020-01-02]                     False  
[2020-01-04, 2020-01-05]                      True  
np.stack([idx.overlaps(interval) for interval in idx])
#or for dataframe
pd.DataFrame([idx.overlaps(interval) for interval in idx], 
             index=s.values, columns=s.values)