Skip to content

Instantly share code, notes, and snippets.

@tweddielin
Created September 11, 2020 03:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tweddielin/9a1b1c560dd4c803fd34aadf5f4c3e7c to your computer and use it in GitHub Desktop.
Save tweddielin/9a1b1c560dd4c803fd34aadf5f4c3e7c to your computer and use it in GitHub Desktop.
def graph_approach(df, key='person_id', start='start', end='end'):
start = df[start]values
end = df[end]values
person_id = df[person_id]values
graph = (start <= end[:, None]) & (end >= start[:, None]) & (person_id == person_id[:, None])
n_components, indices = connected_components(graph, directed=False)
return df.groupby(indices).aggregate({'person_id': 'first', 'start': 'min','end': 'max'})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment