У меня есть список даты и времени, который выглядит следующим образом
as_of_date
[Timestamp('2018-08-01 00:00:00'),
Timestamp('2018-07-01 00:00:00'),
Timestamp('2018-06-01 00:00:00'),
Timestamp('2018-05-01 00:00:00'),
Timestamp('2018-04-01 00:00:00'),
Timestamp('2018-03-01 00:00:00'),
Timestamp('2018-02-01 00:00:00'),
Timestamp('2018-01-01 00:00:00'),
Timestamp('2017-12-01 00:00:00'),
Timestamp('2017-11-01 00:00:00'),
Timestamp('2017-10-01 00:00:00'),
Timestamp('2017-09-01 00:00:00')]
У меня также есть список списков времени и даты, называемый dates
, первая строка -
dates[0]
[Timestamp('2018-08-01 00:00:00'),
Timestamp('2018-08-01 00:00:00'),
Timestamp('2018-07-01 00:00:00'),
Timestamp('2018-07-01 00:00:00'),
Timestamp('2018-06-01 00:00:00'),
Timestamp('2018-05-01 00:00:00'),
Timestamp('2018-04-01 00:00:00'),
Timestamp('2018-04-01 00:00:00'),
Timestamp('2017-11-01 00:00:00'),
Timestamp('2017-10-01 00:00:00'),
Timestamp('2017-10-01 00:00:00'),
Timestamp('2017-08-01 00:00:00')]
Теперьто, что я настроил типы и данные, с которыми я работаю, это то, что мне нужно сделать.Я проиллюстрирую это на примере:
as_of_date = [8/18 7/18 6/18 5/18 4/18 3/18 2/18 1/18 12/17 11/17 10/17 9/17]
dates[0] = [8/18 8/18 7/18 7/18 6/18 5/18 4/18 4/18 11/17 10/17 10/17 8/17 7/17]
Теперь мне нужен список списков с именем paystring, где я сейчас проиллюстрирую способ вычисления первой строки.
paystring[0][0] = as_of_date[0] - dates[0][0] + 1 = 1
paystring[0][1] = 0 since as_of_date[1] < dates[0][1]
paystring[0][2] = 0 since as_of_date[2] < dates[0][2]
и т. Д.
Первый ряд выигрышной строки должен быть
1 0 0 0 0 0 0 0 2 2 1 2
Вот что я пробовал:
dates = new_ndd.values.tolist()
NDD_days = start.values.tolist()
paystring = []
for i in range(len(as_of_date)):
paystring.append([])
for j in range(len(dates[i])):
if as_of_date[i] < dates[i][j]:
paystring[i].append(0)
elif NDD_days[i].day > 1:
paystring[i].append(((as_of_date[i].month + 12 - dates[i][j].month)) % 12)
else:
paystring[i].append(((as_of_date[i].month + 12 - dates[i][j].month) + 1) % 12)
print(paystring[0])
Но я получаю это:
[1, 1, 2, 2, 3, 4, 5, 5, 10, 11, 11, 1, 2]
Кто-нибудь знает, как это исправить?
** Более подробная информация:
Вот общая схема:
paystring[0][0] = as_of_date[0] - dates[0][0]
...
paystring[1][0] = as_of_date[0] - dates[1][0]