Pandas检查多行中的重叠日期

2024-10-01 15:32:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要对一个大的groupby查询运行一个函数,该查询检查两个子组是否有重叠的日期。下面是单个组tmp的示例:

    ID  num start       stop        subGroup
0   21  10  2006-10-10  2008-10-03  1
1   21  46  2006-10-10  2100-01-01  2
2   21  5   1997-11-25  1998-09-29  1
3   21  42  1998-09-29  2100-01-01  2
4   21  3   1997-01-07  1997-11-25  1
5   21  6   2006-10-10  2008-10-03  1
6   21  47  1998-09-29  2006-10-10  2
7   21  4   1997-01-07  1998-09-29  1

我编写的函数如下所示:

^{pr2}$

问题是这段代码有很多冗余,当我运行查询时:

groups.agg(hasOverlap)

终止合同需要很长时间。在

有什么性能修正(例如使用内置函数或set_index)来加快速度吗?在


Tags: 函数代码id示例startnumtmpagg
1条回答
网友
1楼 · 发布于 2024-10-01 15:32:28

您只是希望根据重叠的存在返回“True”还是“False”?如果是这样,我只需要得到每个子组的日期列表,然后使用pandasisin方法检查它们是否重叠。在

你可以试试这样的方法:

#split subgroups into separate DF's
group1 = groups[groups.subgroup==1]
group2 = groups[groups.subgroup==2]

#check if any of the start dates from group 2 are in group 1
if len(group1[group1.start.isin(list(group2.start))]) >0:
    print "Group1 overlaps group2"

#check if any of the start dates from group 1 are in group 2
if len(group2[group2.start.isin(list(group1.start))]) >0:
    print "Group2 overlaps group1"

相关问题 更多 >

    热门问题