需要根据父任务对任务进行排序
Need to sort task depending upon the parent task
需要对任务进行排序,一旦列出了任务的父项,它就应该按顺序出现。可以将其视为有向无环图 (DAG)
在这个特定的例子中,
主要问题是:
“13 ifhj 5,4,9,15”应该总是在 5,4,9 之后,15.But 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
接受来自https://ipython.org/ipython-doc/dev/parallel/dag_dependencies.html
的输入
import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
def create_DAG(abs_file = "input.csv"):
G2 = nx.DiGraph()
df1 = pd.read_csv(abs_file)
print(df1)
for index, row in df1.iterrows():
print("row['tasknumber']" , row['tasknumber'], "row['Parent_Task_Numbers']", row['Parent_Task_Numbers'])
parents = row['Parent_Task_Numbers'].split(",")
for p in parents:
G2.add_edge(int(p), int(row['tasknumber']))
nodes = df1["tasknumber"].tolist()
map(G2.add_node, nodes)
for item in nodes:
print("successors of {} is {}".format(item, list(G2.successors(item))))
# now draw the graph:
nx.draw(G2, with_labels=True, edge_color='r')
plt.show()
print("graph printed ")
return G2
G2 = create_DAG()
order = nx.topological_sort(G2)
print("order :", order)
abs_file = "input.csv"
df2 = pd.read_csv(abs_file)
df3 = pd.DataFrame(columns=df2.columns)
for task in order:
row1 = df2.loc[df2['tasknumber'] == task]
df3 = df3.append(row1, ignore_index=True)
print("rearranged data frame is : ", df3)
需要对任务进行排序,一旦列出了任务的父项,它就应该按顺序出现。可以将其视为有向无环图 (DAG)
在这个特定的例子中, 主要问题是: “13 ifhj 5,4,9,15”应该总是在 5,4,9 之后,15.But 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
接受来自https://ipython.org/ipython-doc/dev/parallel/dag_dependencies.html
的输入import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd
def create_DAG(abs_file = "input.csv"):
G2 = nx.DiGraph()
df1 = pd.read_csv(abs_file)
print(df1)
for index, row in df1.iterrows():
print("row['tasknumber']" , row['tasknumber'], "row['Parent_Task_Numbers']", row['Parent_Task_Numbers'])
parents = row['Parent_Task_Numbers'].split(",")
for p in parents:
G2.add_edge(int(p), int(row['tasknumber']))
nodes = df1["tasknumber"].tolist()
map(G2.add_node, nodes)
for item in nodes:
print("successors of {} is {}".format(item, list(G2.successors(item))))
# now draw the graph:
nx.draw(G2, with_labels=True, edge_color='r')
plt.show()
print("graph printed ")
return G2
G2 = create_DAG()
order = nx.topological_sort(G2)
print("order :", order)
abs_file = "input.csv"
df2 = pd.read_csv(abs_file)
df3 = pd.DataFrame(columns=df2.columns)
for task in order:
row1 = df2.loc[df2['tasknumber'] == task]
df3 = df3.append(row1, ignore_index=True)
print("rearranged data frame is : ", df3)