Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 可以在数据帧中使用重叠吗?

Python 可以在数据帧中使用重叠吗?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,Python 3.7, 熊猫25 我有一个Pandas数据框,其中包含startdate和enddate列。我正在寻找与变量范围重叠的范围。在不冗长和使用and/OR组合一系列大于/小于语句以过滤掉所需行的情况下,我希望使用某种间隔“重叠”。熊猫似乎具有以下功能: 以下测试工作: range1 = pd.Interval(pd.Timestamp('2017-01-01 00:00:00'),pd.Timestamp('2018-01-01 00:00:00'),closed='both')

Python 3.7, 熊猫25

我有一个Pandas数据框,其中包含startdate和enddate列。我正在寻找与变量范围重叠的范围。在不冗长和使用and/OR组合一系列大于/小于语句以过滤掉所需行的情况下,我希望使用某种间隔“重叠”。熊猫似乎具有以下功能:

以下测试工作:

range1 = pd.Interval(pd.Timestamp('2017-01-01 00:00:00'),pd.Timestamp('2018-01-01 00:00:00'),closed='both')
range2 = pd.Interval(pd.Timestamp('2016-01-01 00:00:00'),pd.Timestamp('2017-01-01 00:00:00'),closed='both')
range1.overlaps(range2)
但是,当我将其应用于dataframe列时,它不会。我不确定我的语法是否有错误,或者这是否不能应用于数据帧。以下是我尝试过的一些事情(并收到了一系列错误):

有人能告诉我一个有效的方法来实现这一点吗

根据请求,数据帧输出如下所示:

      record    startdate    enddate
0         99    2017-07-01 2018-06-30
1        280    2018-08-01 2021-07-31
2        100    2017-07-01 2018-06-30
3        281    2017-07-01 2018-06-30

您需要从
df.startdate
df.enddate
创建
IntervalIndex
,并对
reporttest\u范围使用
overlaps
。您的示例返回所有true,因此我为
False
case添加了行

Sample df:   

   record  startdate    enddate
0    9931 2017-07-01 2018-06-30
1   28075 2018-08-01 2021-07-31
2   10042 2017-07-01 2018-06-30
3   28108 2017-07-01 2018-06-30
4   28109 2016-07-01 2016-12-30
5   28111 2017-07-02 2018-09-30

iix = pd.IntervalIndex.from_arrays(df.startdate, df.enddate, closed='both')
iix.overlaps(reporttest_range)

Out[400]: array([ True,  True,  True,  True, False,  True])
使用它仅拾取重叠行

df[iix.overlaps(reporttest_range)]

Out[401]:
   record  startdate    enddate
0    9931 2017-07-01 2018-06-30
1   28075 2018-08-01 2021-07-31
2   10042 2017-07-01 2018-06-30
3   28108 2017-07-01 2018-06-30
5   28111 2017-07-02 2018-09-30

你能分享几行我的数据框吗?谢谢-这正是我需要的。
df[iix.overlaps(reporttest_range)]

Out[401]:
   record  startdate    enddate
0    9931 2017-07-01 2018-06-30
1   28075 2018-08-01 2021-07-31
2   10042 2017-07-01 2018-06-30
3   28108 2017-07-01 2018-06-30
5   28111 2017-07-02 2018-09-30