pythonadvanced

Detect Overlapping Date Intervals

Identify overlapping time periods in a DataFrame (e.g., booking conflicts or subscription overlaps).

python
import pandas as pd

bookings = pd.DataFrame({
    'id':    [1, 2, 3, 4],
    'start': pd.to_datetime(['2024-01-01','2024-01-03','2024-01-05','2024-01-08']),
    'end':   pd.to_datetime(['2024-01-05','2024-01-07','2024-01-10','2024-01-12']),
})

overlaps = []
for _, row in bookings.iterrows():
    mask = (
        (bookings['id'] != row['id']) &
        (bookings['start'] < row['end']) &
        (bookings['end'] > row['start'])
    )
    if mask.any():
        overlaps.append((row['id'], bookings.loc[mask,'id'].tolist()))

print('Overlapping bookings:', overlaps)

Use Cases

  • scheduling conflicts
  • subscription overlap
  • room booking systems

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.