Среднее время, необходимое для выполнения деятельности - PullRequest
0 голосов
/ 26 октября 2018

У меня есть столбец под названием Время, затраченное на выполнение действия (например: поднимитесь по лестнице). Если в первый раз мне потребовалось 0:30 секунд, а во второй раз - 1:10 минут, я хочу вернуть результат в среднем 50 секунд. TimeElapsed является столбцом даты и времени

Введите:

df = pd.DataFrame([[1, '0:30'], [1, '1:10'], [2, '0:30']], columns=['Person Id', 'TimeElapsed'])

Выход:

df2 = pd.DataFrame([[1, '0:50'], [2, '0:30']], columns=['Person Id', 'Average TimeElapsed'])     

Я пытался использовать

df2['AverageTimeElapsed'] = df[TimeElapsed'].dt.total_seconds()

но это не работает, потому что это не функция timedelta.

1 Ответ

0 голосов
/ 26 октября 2018

Это преобразует ваш столбец в дельту времени:

df["TimeElapsed"] = pd.to_timedelta("00:"+df["TimeElapsed"])

и тогда вы можете сделать total_seconds(). В частности, если вы ищете среднее значение, вы можете просто получить его из:

df["TimeElapsed"].mean()

Обновление:

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

df["TimeElapsed"] = df["TimeElapsed"].apply(
    lambda T: datetime.timedelta(seconds=
         sum([x*y for x,y in zip([int(t) for t in T.split(":")], [60,1])])
    )
)

Это немного нечитаемо, однако. Но я полагаю, что вы получите смысл преобразовать строку в число / время до дальнейшей обработки.

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