columns = ['Id','Stage','performer','TimeInWork','timecreated']
data = [['DI00021', 'Stage1','User1','NaN','16.10.2018 2:02:15']
, ['DI00021','Stage1','User1','0.0264','16.10.2018 2:03:00']
, ['DI00021','Stage2','User2','NaN','16.10.2018 2:04:10']
, ['SP48576','Stage1','User3','NaN','16.10.2018 9:19:27']
, ['DI00021','Stage2','User2','23.9458','17.10.2018 2:00:00']
, ['DI00021','Stage3','User2','NaN','17.10.2018 2:00:00']
, ['SP48576','Stage2','User4','NaN','18.10.2018 9:26:46']
, ['SP48576','Stage1','User3','48.1178','18.10.2018 9:26:32']]
d = {}
res1 = []
res2 = []
for row in data:
cur = d.setdefault(row[0], {}).setdefault(row[1], [])
if not cur:
cur.extend(row)
cur.append(cur[-1])
cur[-2] = ''
res1.append(cur)
else:
cur[3] = row[3]
cur[-2] = row[-1]
res2.append(cur)
print('=== by start ===')
print(res1)
print('=== by end ===')
print(res2)
Y29sdW1ucyA9IFsnSWQnLCdTdGFnZScsJ3BlcmZvcm1lcicsJ1RpbWVJbldvcmsnLCd0aW1lY3JlYXRlZCddCgpkYXRhID0gW1snREkwMDAyMScsICdTdGFnZTEnLCdVc2VyMScsJ05hTicsJzE2LjEwLjIwMTggIDI6MDI6MTUnXQogICwgWydESTAwMDIxJywnU3RhZ2UxJywnVXNlcjEnLCcwLjAyNjQnLCcxNi4xMC4yMDE4ICAyOjAzOjAwJ10KICAsIFsnREkwMDAyMScsJ1N0YWdlMicsJ1VzZXIyJywnTmFOJywnMTYuMTAuMjAxOCAgMjowNDoxMCddCiAgLCBbJ1NQNDg1NzYnLCdTdGFnZTEnLCdVc2VyMycsJ05hTicsJzE2LjEwLjIwMTggOToxOToyNyddCiAgLCBbJ0RJMDAwMjEnLCdTdGFnZTInLCdVc2VyMicsJzIzLjk0NTgnLCcxNy4xMC4yMDE4ICAyOjAwOjAwJ10KICAsIFsnREkwMDAyMScsJ1N0YWdlMycsJ1VzZXIyJywnTmFOJywnMTcuMTAuMjAxOCAgMjowMDowMCddCiAgLCBbJ1NQNDg1NzYnLCdTdGFnZTInLCdVc2VyNCcsJ05hTicsJzE4LjEwLjIwMTggOToyNjo0NiddCiAgLCBbJ1NQNDg1NzYnLCdTdGFnZTEnLCdVc2VyMycsJzQ4LjExNzgnLCcxOC4xMC4yMDE4IDk6MjY6MzInXV0KCmQgPSB7fQpyZXMxID0gW10KcmVzMiA9IFtdCgpmb3Igcm93IGluIGRhdGE6CiAgY3VyID0gZC5zZXRkZWZhdWx0KHJvd1swXSwge30pLnNldGRlZmF1bHQocm93WzFdLCBbXSkKICBpZiBub3QgY3VyOgogICAgY3VyLmV4dGVuZChyb3cpCiAgICBjdXIuYXBwZW5kKGN1clstMV0pCiAgICBjdXJbLTJdID0gJycKICAgIHJlczEuYXBwZW5kKGN1cikKICBlbHNlOgogICAgY3VyWzNdID0gcm93WzNdCiAgICBjdXJbLTJdID0gcm93Wy0xXQogICAgcmVzMi5hcHBlbmQoY3VyKQoKcHJpbnQoJz09PSBieSBzdGFydCA9PT0nKQpwcmludChyZXMxKQoKcHJpbnQoJz09PSBieSBlbmQgPT09JykKcHJpbnQocmVzMik=
=== 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']]