Я работал над проектом на python, чтобы автоматизировать некоторые отчеты, которые моя команда создавала вручную. У меня какая-то упрямая проблема, я не могу понять, что я делаю.
По сути, область, в которой я застрял, имеет 4 отдельных столбца данных, которые я сделал общей версией ниже.
Start Time | Finish Time | Not Usable Reason | Start to Finish
12:36 15:36 3:00
16:35 19:45 Production Defect 3:10
19:55 QA Failure
Неиспользуемая причина имеет на высоком уровне два варианта. Пустой ИЛИ текст, описывающий проблему. Кроме того, в зависимости от проблемы, время окончания, возможно, не было записано из-за некоторой проблемы QA, которая была замечена до того, как она была завершена, что привело к неиспользуемой причине, которая не позволяет рассчитать начало до конца.
По сути, я пытаюсь сделать, если есть необоснованная причина, в этой строке в столбце от начала до конца вставьте "-" в это поле.
Код, который я использовал для попытки этого:
processor_df['Start to Finish'] = processor_df['Finish Time'] - processor_df['Start Time']
processor_df['Start to Finish'] = processor_df['Start to Finish'].astype(str)
processor_df['Start to Finish'] = processor_df.loc[pd.isnull(processor_df['Not Usable Reason']) == False, 'Start to Finish'] == '--'
processor_df['Start to Finish'] = pd.to_timedelta(processor_df['Start to Finish'])
Это представляет собой лишь часть кода, относящуюся конкретно к небольшой части, выполняющей вычисления, а затем пытающейся соответствующим образом изменить столбец начала и конца.
Кроме того, я иду из timedelta -> str -> timedelta из-за ошибки, которую я получил, когда не изменил ее на строку:
ValueError: only leading negative signs are allowed
Проблема в том, что мой желаемый вывод будет:
Start Time | Finish Time | Not Usable Reason | Start to Finish
12:36 15:36 3:00
16:35 19:45 Production Defect --
19:55 QA Failure --
но приведенный выше код выдает его как:
Start Time | Finish Time | Not Usable Reason | Start to Finish
12:36 15:36
16:35 19:45 Production Defect False
19:55 QA Failure False
Как лучше всего использовать проверку, если условие существует и заменяет ли оно. Выше сказанное сработало, когда я использовал его исключительно для строк, но мое условие не проверяло, было ли оно пустым, а соответствовало ли оно конкретному значению.
Спасибо за вашу помощь в этом, и если это глупо простая ошибка, я в два раза больше благодарю вас за помощь новичку.
Best
Andy