Необходимо отсортировать задачу так, чтобы она появлялась в последовательности, когда родитель задачи указан в списке. К нему можно обратиться как ориентированный ациклический граф (DAG)
В этом конкретном примере
Основная проблема:
«13 ifhj 5,4,9,15» всегда должно идти после 5,4,9 и 15. Но 13 наступает раньше 15.
Я предоставляю ввод данных и ожидаемый результат.
I / p:
task_no t_name Parent_Task_Numbers
1 task1 0
2 task2 0
3 task3 0
4 task4 1,2
5 task5 0
6 task6 2
7 task7 4
8 task8 6,1,4
9 task9 10
10 task10 1
11 task11 2
12 task12 3
13 task13 5,4,9,15
15 task15 7,8,2,10
Ожидаемый o / p: (Это может отличаться от этого, но основная идея должна быть подана)
task_no t_name Parent_Task_Numbers
1 task1 0
2 task2 0
3 task3 0
5 task5 0
10 task10 1
4 task4 1,2
9 task9 10
6 task6 2
11 task11 2
12 task12 3
7 task7 4
15 task15 7,8,2,10
13 task13 5,4,9,15
8 task8 6,1,4
def sort_parent_tasks1(fileName):
df1 = pd.read_csv(fileName)
print("df1.Parent_Task_Numbers.str.split(',')", type(df1.Parent_Task_Numbers.str.split(',')))
df1.Parent_Task_Numbers.str.split(',').apply(sorted, reverse = True).str.join(',').str.strip(',')
df3 = df1.sort_values(['Parent_Task_Numbers'])
df3.to_csv("/fileData/task_files/output/test_generated1.csv")
inputFile = "/fileData/task_files/input/test.csv"
sort_parent_tasks1(inputFile)
То, что я получаю, это: НЕПРАВИЛЬНО.
tasknumber taskname Parent_Task_Numbers
1 task1 0
2 task2 0
3 task3 0
5 task5 0
10 task10 1
4 task4 1,2
9 task9 10
6 task6 2
11 task11 2
12 task12 3
7 task7 4
13 task13 5,4,9,15
8 task8 6,1,4
15 task15 7,8,2,1