Поиск отдельных интервалов времени между двумя столбцами данных в формате datetime, возможно, с использованием цикла for - PullRequest
0 голосов
/ 07 апреля 2020

Я новичок в Python и кодировании в целом, и у меня есть проблема с программированием a для l oop, как было предложено инструктором, чтобы найти время, прошедшее между моментами выключения и перезапуска для силовой установки.

Мне удалось выделить интересующие меня столбцы, сформировав фрейм данных:

oilSubData4 = pd.DataFrame(oilData[['Shutdown Date/Time', 'Restart Date/Time']])

Мне также удалось преобразовать столбцы в формат datetime и удалить строки NaT:

oilSubData4['Shutdown Date/Time'] = pd.to_datetime(oilSubData4['Shutdown Date/Time'])
oilSubData4['Restart Date/Time'] = pd.to_datetime(oilSubData4['Restart Date/Time'])
oilShutdownTime = oilSubData4.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

Все это завершилось формированием этого изображения данных, которые я буду sh, чтобы найти отдельные промежутки времени

Именно в этот момент я изо всех сил пытался найти способ найдите разницу во времени между каждым временем / датой перезапуска и временем / датой выключения для каждой строки данных. У меня нет опыта работы с циклами, и я не знаю, с чего начать.

Моя попытка заключается в следующем:

for x in oilShutdownTime:
oilShutdownTime['time_diff'][x+1] = oilShutdownTime['Restart Date/Time'][x+1] - oilShutdownTime['Restart Date/Time'][x]

, и отображается следующая ошибка:


TypeError Traceback (последний последний вызов) в 1 для x в oilShutdownTime: ----> 2 oilShutdownTime ['time_diff'] [x + 1] = oilShutdownTime ['Дата / Время перезапуска'] [x + 1] - oilShutdownTime ['Дата / Время перезапуска'] [x]

Ошибка типа: может объединять только str (не "int") в str

Пожалуйста, посоветуйте, как исправить это если возможно. Я знаю, что мой код может быть неточным, поэтому любая помощь приветствуется, спасибо!

1 Ответ

0 голосов
/ 07 апреля 2020

Твой фор-л oop смущает меня. Я не уверен, что вы пытаетесь сделать.

Давайте возьмем первую строку из вашего примера:

"Shutdown Date/Time","Restart Date/Time"
2010-01-08 23:41:00,2010-01-13 09:17:00

Хотите ли вы, чтобы результат для этой строки был 4 days 09:36:00? Вот как я понимаю твой вопрос. В этом случае попробуйте следующее:

>>> oilShutdownTime['Restart Date/Time'] - oilShutdownTime['Shutdown Date/Time']

0   4 days 09:36:00
1   0 days 01:00:00
2   0 days 00:00:40
3   0 days 12:10:00
4   1 days 10:03:15
dtype: timedelta64[ns]

Примечание: реальные данные - только первая строка, я не ввел все даты из вашего изображения ..

Возможно, в этом нет необходимости. для всех oop на данный момент. Pandas может обрабатывать вычисления по столбцам внутри системы более эффективно, чем если бы вы сами использовали for-l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...