Guest User

Untitled

a guest
Jan 23rd, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. node_id parent_id
  2. 1 0
  3. 2 1
  4. 3 1
  5. 4 2
  6. ...
  7.  
  8. import pandas as pd
  9. from collections import defaultdict
  10.  
  11. # phase 1
  12. nodes_df = pd.read_csv('input.csv')
  13.  
  14. # phase 2
  15. node_ancestors = defaultdict(set)
  16. node_ancestors[0] = set([0])
  17. for id, ndata in nodes_df1.iterrows():
  18. node_ancestors[ndata['node_id']].add(ndata['node_id'])
  19. node_ancestors[ndata['node_id']].update(node_ancestors[ndata['parent_id']])
  20.  
  21. # phase 3
  22. node_descendants = defaultdict(set)
  23. node_descendants[0] = set([0])
  24. for id, ndata in nodes_df1[::-1].iterrows():
  25. node_descendants[ndata['node_id']].add(ndata['node_id'])
  26. node_descendants[ndata['parent_id']].
  27. update(node_descendants[ndata['node_id']])
  28.  
  29. node_ancestors = defaultdict(set)
  30. node_ancestors[0] = set([0])
  31. node_descendants = defaultdict(set)
  32. node_descendants[0] = set([0])
  33. for _, node, parent in df.itertuples():
  34. node_ancestors[node].add(node)
  35. node_ancestors[node].update(node_ancestors[parent])
  36.  
  37. for ancestor in node_ancestors[node]:
  38. node_descendants[ancestor].add(node)
  39.  
  40. def parse_tree(df):
  41. node_ancestors = defaultdict(set)
  42. node_ancestors[0] = set([0])
  43. node_descendants = defaultdict(set)
  44. node_descendants[0] = set([0])
  45. for _, node, parent in df.itertuples():
  46. node_ancestors[node].add(node)
  47. node_ancestors[node].update(node_ancestors[parent])
  48.  
  49. for ancestor in node_ancestors[node]:
  50. node_descendants[ancestor].add(node)
  51.  
  52. return node_ancestors, node_descendants
Add Comment
Please, Sign In to add comment