Python: создайте массивы, содержащие времена, и сможете суммировать их - PullRequest
0 голосов
/ 26 апреля 2020

Мне нужно создать массивы, содержащие значения времени (чч: мм: сс), выбрать значение из каждого массива и суммировать их. Я создал массивы с помощью pd.timedelta_range () и сэмплировал с помощью rd.choices (). Мне нужно было бы суммировать выборочное время отправления и продолжительность, чтобы получить время прибытия, но вылет + длительность просто распечатывает два значения без предоставления итоговых значений.

departure_time = pd.timedelta_range('04:00:00', '09:45:00', freq='15T')
departure_prob = (0.008, 0.008, 0.008,  0.008,  0.032,  0.032, 0.032,   0.032,  0.082,  0.082, 0.082,    
0.082,  0.08,   0.08, 0.08, 0.08,   0.034,  0.034,  0.034,  0.034,  0.014,  0.014, 0.014,   0.014)

duration_time = pd.timedelta_range('00:15:00', '01:15:00', freq='15T')
duration_prob = (0.355, 0.321, 0.152, 0.086, 0.086)

departure = rd.choices(departure_time, departure_prob)
duration = rd.choices(duration_time, duration_prob)
print(departure+duration)

есть ли способ сделать это?

Ответы [ 2 ]

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

проблема в том, что переменные вылета и длительности являются списками (каждый из которых содержит один элемент). вам нужно извлечь объекты timedelta: departure[0]+duration[0]

или более четко:

departure = rd.choices(departure_time, departure_prob)[0]
duration = rd.choices(duration_time, duration_prob)[0]

, тогда departure + duration будет работать так, как вы намереваетесь.

Cheers !

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

Попробуйте это

import pandas as pd
import random as rd
import datetime

#departure_time = pd.timedelta_range('04:00:00', '09:45:00', freq='15T')
departure_time = pd.date_range(start='2017-01-01 10:00', end='2017-01-02 09:00', freq='1h')
departure_prob = (0.008, 0.008, 0.008,  0.008,  0.032,  0.032, 0.032,   0.032,  0.082,  0.082, 0.082,    
0.082,  0.08,   0.08, 0.08, 0.08,   0.034,  0.034,  0.034,  0.034,  0.014,  0.014, 0.014,   0.014)

duration_time = pd.timedelta_range('00:15:00', '01:15:00', freq='15T')
duration_prob = (0.355, 0.321, 0.152, 0.086, 0.086)

departure = rd.choices(departure_time, departure_prob)
duration = rd.choices(duration_time, duration_prob)

print(departure[0]+duration[0])

Если вы хотите получить время, вы должны использовать дату. Timedelta, как следует из названия, период времени.

...