fork download
  1. columns = ['Id','Stage','performer','TimeInWork','timecreated']
  2.  
  3. data = [['DI00021', 'Stage1','User1','NaN','16.10.2018 2:02:15']
  4. , ['DI00021','Stage1','User1','0.0264','16.10.2018 2:03:00']
  5. , ['DI00021','Stage2','User2','NaN','16.10.2018 2:04:10']
  6. , ['SP48576','Stage1','User3','NaN','16.10.2018 9:19:27']
  7. , ['DI00021','Stage2','User2','23.9458','17.10.2018 2:00:00']
  8. , ['DI00021','Stage3','User2','NaN','17.10.2018 2:00:00']
  9. , ['SP48576','Stage2','User4','NaN','18.10.2018 9:26:46']
  10. , ['SP48576','Stage1','User3','48.1178','18.10.2018 9:26:32']]
  11.  
  12. d = {}
  13. res1 = []
  14. res2 = []
  15.  
  16. for row in data:
  17. cur = d.setdefault(row[0], {}).setdefault(row[1], [])
  18. if not cur:
  19. cur.extend(row)
  20. cur.append(cur[-1])
  21. cur[-2] = ''
  22. res1.append(cur)
  23. else:
  24. cur[3] = row[3]
  25. cur[-2] = row[-1]
  26. res2.append(cur)
  27.  
  28. print('=== by start ===')
  29. print(res1)
  30.  
  31. print('=== by end ===')
  32. print(res2)
Success #stdin #stdout 0.02s 9104KB
stdin
Standard input is empty
stdout
=== by start ===
[['DI00021', 'Stage1', 'User1', '0.0264', '16.10.2018  2:03:00', '16.10.2018  2:02:15'], ['DI00021', 'Stage2', 'User2', '23.9458', '17.10.2018  2:00:00', '16.10.2018  2:04:10'], ['SP48576', 'Stage1', 'User3', '48.1178', '18.10.2018 9:26:32', '16.10.2018 9:19:27'], ['DI00021', 'Stage3', 'User2', 'NaN', '', '17.10.2018  2:00:00'], ['SP48576', 'Stage2', 'User4', 'NaN', '', '18.10.2018 9:26:46']]
=== by end ===
[['DI00021', 'Stage1', 'User1', '0.0264', '16.10.2018  2:03:00', '16.10.2018  2:02:15'], ['DI00021', 'Stage2', 'User2', '23.9458', '17.10.2018  2:00:00', '16.10.2018  2:04:10'], ['SP48576', 'Stage1', 'User3', '48.1178', '18.10.2018 9:26:32', '16.10.2018 9:19:27']]