Я новичок в кодировании на Python.В настоящее время я пытаюсь проанализировать фрейм данных, содержащий несколько рабочих процессов.Каждый рабочий процесс имеет различные этапы процесса для запуска и завершения рабочего процесса.В упрощенной версии мои данные выглядят следующим образом:
Workflow Initiate End_1 End_2 End_3
0 1 Name_1 na Name_1 na
1 2 Name_2 na na na
2 3 Name_3 na na Name_5
3 4 Name_4 Name_5 na na
4 5 na na na Name_5
Для каждого рабочего процесса я хочу сравнить, отличается ли имя, завершившее рабочий процесс, от имени, инициировавшего рабочий процесс.
Итерация по строкам следующим образом дает желаемый результат:
for index, row in df.iterrows():
if ((row['Initiate'] != 'na')
and (row['Initiate'] == row['End_1']) |
(row['Initiate'] == row['End_2']) |
(row['Initiate'] == row['End_3'])
):
print("Name end equals initiate")
elif ((row['End_1'] == 'na') &
(row['End_2'] == 'na') &
(row['End_3'] == 'na')
):
print("No name ended")
else:
print("Different name ended")
Name end equals initiate
No name ended
Different name ended
Different name ended
Different name ended
Однако я хочу добавить дополнительный столбец, скажем, «Анализ», в кадре данных, который показываетвыше результат за каждым рабочим процессом.
Для этого я вставил код в функцию:
def function_name(a, b, c, d):
for index, row in df.iterrows():
if ((a != 'na')
and (a == b) |
(a == c) |
(a == d)
):
return "Name end equals initiate"
elif ((b == 'na') &
(c == 'na') &
(d == 'na')
):
return "No name ended"
else:
return "Different name ended"
df['Analysis'] = function_name(row['Initiate'],
row['End_1'],
row['End_2'],
row['End_3'])
print(df)
Workflow Initiate ... End_3 Analysis
0 1 Name_1 ... na Different name ended
1 2 Name_2 ... na Different name ended
2 3 Name_3 ... Name_5 Different name ended
3 4 Name_4 ... na Different name ended
4 5 na ... Name_5 Different name ended
Как видите, результат отличается от первого анализа.Я хотел бы добавить дополнительный столбец к моему фрейму данных, который дает мне тот же вывод, что и с операторами print.