Guest User

Untitled

a guest
Oct 22nd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. >>>tank_numbers = [1, 3]
  2. >>>primary_key = 'Time'
  3. >>>data_column = 'Volume'
  4. >>>
  5. >>>parse_csv('csv_file.csv', tank_numbers, primary_key, data_column)
  6.  
  7. [
  8. {'Time': '2017-10-19T18:52:41.118408', 'UNLEADED': '4406', 'SUPER': '8317'}
  9. {'Time': '2017-10-19T18:53:13.894066', 'UNLEADED': '4406', 'SUPER': '8317'}
  10. ]
  11.  
  12. # Remove unneeded tanks from data
  13. d2 = [row for row in d1 if int(row['Tank']) in tanks]
  14.  
  15. # Remove unneeded keys from rows
  16. keys = [primary_key, data_key, 'Product']
  17. d3 = [{key:row[key] for key in keys} for row in d2]
  18.  
  19. # Create new row template
  20. tank_names = _get_tank_names(tanks=tanks, data=d1)
  21. row_template = {key:None for key in (tank_names + [primary_key])}
  22.  
  23. # New rows from row template
  24. d4 = []
  25. for row in d3:
  26. # update new row with available keys
  27. new_row = {key:row.get(key) for key in row_template}
  28.  
  29. # update new row with matching values
  30. for key in new_row:
  31. if key in row.values():
  32. new_row[key] = row[data_key]
  33.  
  34. # remove keys with None value
  35. new_row = {k:v for k,v in new_row.items() if v is not None}
  36. d4.append(new_row)
  37.  
  38. # Merge all rows based on Time key
  39. merged = {}
  40. for row in d4:
  41. if row[primary_key] in merged:
  42. merged[row[primary_key]].update(row)
  43. else:
  44. merged[row[primary_key]] = row
  45.  
  46. return [value for value in merged.values()]
Add Comment
Please, Sign In to add comment