-3

I have below data frame

POC_Number  Resource_Number day_to_complete_task
0   0   12
0   1   12
0   5   6
1   3   8
1   0   7
1   5   5
2   3   9
2   2   11
2   4   10

and want output as below list of lists :

[[(0, 12), (1, 12), (5, 6)], [(3, 8), (0, 7), (5, 5)], [(3, 9),(2, 11), (4, 10)]]

kederrac
  • 16,819
  • 6
  • 32
  • 55

2 Answers2

1

you can use:

df.groupby('POC_Number').apply(lambda x: [tuple(i[1:]) for i in x.values]).to_list()

or:

df.groupby('POC_Number')['Resource_Number', 'day_to_complete_task'].apply(
    lambda x: [tuple(i) for i in  x.values]).to_list()

output:

[[(0, 12), (1, 12), (5, 6)],
 [(3, 8), (0, 7), (5, 5)],
 [(3, 9), (2, 11), (4, 10)]]
kederrac
  • 16,819
  • 6
  • 32
  • 55
1

Try this


result = df.groupby('POC_Number')[['Resource_Number', 'day_to_complete_task']].apply(lambda x: x.values.tolist())
result = [list(map(tuple, i)) for i in list(result)]
print(result)

Output:

[[(0, 12), (1, 12), (5, 6)], [(3, 8), (0, 7), (5, 5)], [(3, 9), (2, 11), (4, 10)]]
deadshot
  • 8,881
  • 4
  • 20
  • 39