【发布时间】:2021-05-31 10:37:49
【问题描述】:
我有两个数据框,df1 和 df2,df1 有三列 - group、startdate1 和 enddate1,df2 也有三列,group、startdate2 和 enddate2。我想比较 df1 中的每个组,如果间隔 (startdate1,enddate1) 与同一组的任何间隔 (startdate2,enddate2) 重叠。
我发现这篇文章 (Is it possible to use Pandas Overlap in a Dataframe?) 使用 pandas.IntervalIndex.overlaps 来检查间隔重叠。这与我的问题非常相似,但我正在努力解决如何将 groupby 用于 pandas.IntervalIndex.overlaps (或者我应该使用其他方法)?以下是一些示例数据:
df1:
| group | startdate1 | enddate1 |
|---|---|---|
| A | 2017-07-01 | 2018-06-30 |
| B | 2017-07-01 | 2018-06-30 |
| A | 2018-07-01 | 2019-06-30 |
| B | 2019-07-01 | 2020-06-30 |
df2:
| group | startdate2 | enddate2 |
|---|---|---|
| A | 2017-05-01 | 2018-04-30 |
| A | 2019-10-01 | 2020-01-31 |
| B | 2017-07-02 | 2018-06-29 |
| B | 2018-07-01 | 2019-06-30 |
如果同一组的 df2 有任何间隔重叠,则预期输出是在 df1 中添加 1 或 0 列。 df_output:
| group | startdate1 | enddate1 | flag |
|---|---|---|---|
| A | 2017-07-01 | 2018-06-30 | 1 |
| B | 2017-07-01 | 2018-06-30 | 1 |
| A | 2018-07-01 | 2019-06-30 | 0 |
| B | 2019-07-01 | 2020-06-30 | 0 |
谢谢!
【问题讨论】:
标签: python pandas dataframe overlap