Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- node_id parent_id
- 1 0
- 2 1
- 3 1
- 4 2
- ...
- import pandas as pd
- from collections import defaultdict
- # phase 1
- nodes_df = pd.read_csv('input.csv')
- # phase 2
- node_ancestors = defaultdict(set)
- node_ancestors[0] = set([0])
- for id, ndata in nodes_df1.iterrows():
- node_ancestors[ndata['node_id']].add(ndata['node_id'])
- node_ancestors[ndata['node_id']].update(node_ancestors[ndata['parent_id']])
- # phase 3
- node_descendants = defaultdict(set)
- node_descendants[0] = set([0])
- for id, ndata in nodes_df1[::-1].iterrows():
- node_descendants[ndata['node_id']].add(ndata['node_id'])
- node_descendants[ndata['parent_id']].
- update(node_descendants[ndata['node_id']])
- node_ancestors = defaultdict(set)
- node_ancestors[0] = set([0])
- node_descendants = defaultdict(set)
- node_descendants[0] = set([0])
- for _, node, parent in df.itertuples():
- node_ancestors[node].add(node)
- node_ancestors[node].update(node_ancestors[parent])
- for ancestor in node_ancestors[node]:
- node_descendants[ancestor].add(node)
- def parse_tree(df):
- node_ancestors = defaultdict(set)
- node_ancestors[0] = set([0])
- node_descendants = defaultdict(set)
- node_descendants[0] = set([0])
- for _, node, parent in df.itertuples():
- node_ancestors[node].add(node)
- node_ancestors[node].update(node_ancestors[parent])
- for ancestor in node_ancestors[node]:
- node_descendants[ancestor].add(node)
- return node_ancestors, node_descendants
Add Comment
Please, Sign In to add comment