Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- >>>tank_numbers = [1, 3]
- >>>primary_key = 'Time'
- >>>data_column = 'Volume'
- >>>
- >>>parse_csv('csv_file.csv', tank_numbers, primary_key, data_column)
- [
- {'Time': '2017-10-19T18:52:41.118408', 'UNLEADED': '4406', 'SUPER': '8317'}
- {'Time': '2017-10-19T18:53:13.894066', 'UNLEADED': '4406', 'SUPER': '8317'}
- ]
- # Remove unneeded tanks from data
- d2 = [row for row in d1 if int(row['Tank']) in tanks]
- # Remove unneeded keys from rows
- keys = [primary_key, data_key, 'Product']
- d3 = [{key:row[key] for key in keys} for row in d2]
- # Create new row template
- tank_names = _get_tank_names(tanks=tanks, data=d1)
- row_template = {key:None for key in (tank_names + [primary_key])}
- # New rows from row template
- d4 = []
- for row in d3:
- # update new row with available keys
- new_row = {key:row.get(key) for key in row_template}
- # update new row with matching values
- for key in new_row:
- if key in row.values():
- new_row[key] = row[data_key]
- # remove keys with None value
- new_row = {k:v for k,v in new_row.items() if v is not None}
- d4.append(new_row)
- # Merge all rows based on Time key
- merged = {}
- for row in d4:
- if row[primary_key] in merged:
- merged[row[primary_key]].update(row)
- else:
- merged[row[primary_key]] = row
- return [value for value in merged.values()]
Add Comment
Please, Sign In to add comment