Рассчитать разницу во времени в часах или секундах между двумя столбцами данных - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь вычислить время простоя машины в коде Python, который является преимущественно манипуляцией с пандами.Если ремонтный номер начинается в течение какого-либо из дней, тогда у меня есть время между началом дня и началом рабочего задания в качестве времени, доступного моей машине.Я создал столбец для времени начала дня, как и в каждой строке, которая находится на уровне детализации дня, поэтому при наличии заказа на ремонт мне просто нужно вычесть два поля времени, чтобы получить ответ в секундах / часах.Но в настоящее время я получаю сообщение об ошибке, поскольку объект «Timedelta» не имеет атрибута «astype».Я попробовал несколько вариантов, предложенных здесь, но ни в коем случае.Я знаю, что делаю что-то очень неправильно, пожалуйста, укажите мне правильные направления.

for i, row in df4.iterrows():
    if (row['Date'] == row['START_DATE']) | (row['Date'] == row['END_DATE']):
        if (row['START_DATE'] == row['Date']) & (row['END_DATE'] != row['Date']):

            value = pd.to_timedelta(row.REPAIR_START-row.Date_start).astype('timedelta64[h]')
            df4.set_value(i,'avail',value)

        if (row['START_DATE'] != row['Date']) & (row['END_DATE'] == row['Date']):

            value = pd.to_timedelta((row.REPAIR_FINISH-row.Date_end)).astype('timedelta64[h]')
            df4.set_value(i,'avail',value)

        if (row['START_DATE'] == row['Date']) & (row['END_DATE'] == row['Date']):
            value = pd.to_timedelta((row.REPAIR_START-row.REPAIR_FINISH)).astype('timedelta64[h]')
            df4.set_value(i,'avail',value)
        else: df4.set_value(i,'avail',full_day)

Данные на уровне машины, уровень даты.Объяснение метаданных кода:
Дата: Ежедневная дата
START_DATE: Только часть даты временной отметки ремонта
END_DATE: Только часть даты временной отметки ремонта
REPAIR_START: Отметка времени начала заказа на ремонт
REPAIR_START: отметка времени окончания ремонта

...