Вы можете сделать что-то подобное, что будет намного быстрее, чем циклы:
1.) Создайте список дат:
In [34]: start_dt = '2018-01-01'
# For whole year, use periods=365
In [45]: days_list = pd.date_range(pd.to_datetime(start_dt), periods=3)
In [59]: days_list = [i.date() for i in days_list] # Keeping only date part
2.) Создайте список раз:
In [38]: timelist = ['09:00', '10:35', '14:00', '15:50']
3.) Расширьте список, повторяя каждый элемент в days_list
4 раза, по одному на каждый раз:
In [60]: import numpy as np
In [61]: days_list = np.repeat(days_list, 4)
4.) Расширьте временной список, умножив его на уникальные даты в days_list, чтобы иметь одинаковую длину, имеет days_list:
Итак, поскольку мы использовали periods=3
при создании days_list.Таким образом, расширение временного списка на тот же коэффициент;
In [64]: timelist = timelist * 3
5.) Создание кадра данных:
In [65]: df = pd.DataFrame()
In [66]: df['Date'] = days_list
In [68]: df['time'] = timelist
Окончательный вывод:
In [78]: df
Out[78]:
Date time
0 2018-01-01 09:00
1 2018-01-01 10:35
2 2018-01-01 14:00
3 2018-01-01 15:50
4 2018-01-02 09:00
5 2018-01-02 10:35
6 2018-01-02 14:00
7 2018-01-02 15:50
8 2018-01-03 09:00
9 2018-01-03 10:35
10 2018-01-03 14:00
11 2018-01-03 15:50