pythonintermediate

Pandas Conditional Join with merge + query

Perform range/conditional joins by merging on a common key and filtering with query expressions.

python
import pandas as pd

events = pd.DataFrame({'event_id':[1,2,3,4],'ts':[100,200,300,400],'user_id':[1,1,2,2]})
windows = pd.DataFrame({'user_id':[1,2],'start':[50,250],'end':[250,450]})

# Cross join on user_id, then filter
joined = events.merge(windows, on='user_id', how='inner')
result = joined.query('start <= ts <= end')
print(result[['event_id','user_id','ts','start','end']])

Use Cases

  • session attribution
  • range join
  • event windowing

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.