Выбирайте значимые имена переменных, не делайте слишком много вещей за раз, скорее делайте это шаг за шагом. Мы начинаем только с префиксов столбцов:
column_prefixes = ["colA", "colB", "colC", "colD"]
for column_prefix in column_prefixes:
print(column_prefix)
Что печатает:
colA
colB
colC
colD
Теперь мы добавим дополнительный l oop для того, сколько лет назад были получены данные. Помните, что range
не включает «последний шаг», поэтому, если нам нужен текущий год 0
и год назад 1
, нам нужно запустить range(0, 2)
. Это может помочь вам, если вы вместо этого напишите range(0, 1 + 1)
:
column_prefixes = ["colA", "colB", "colC", "colD"]
for column_prefix in column_prefixes:
for year in range(0, 1 + 1):
print(column_prefix, year)
Что печатает:
colA 0
colA 1
colB 0
colB 1
colC 0
colC 1
colD 0
colD 1
Теперь мы добавим окончательный l oop для номера месяца , Вам нужно будет выбрать начало и конец для range
в зависимости от year
:
column_prefixes = ["colA", "colB", "colC", "colD"]
for column_prefix in column_prefixes:
for year in range(0, 1 + 1):
for month in range(year * 12 + 1, (year + 1) * 12 + 1):
print(column_prefix, year, month)
Что печатает:
colA 0 1
colA 0 2
colA 0 3
colA 0 4
colA 0 5
colA 0 6
colA 0 7
colA 0 8
colA 0 9
colA 0 10
colA 0 11
colA 0 12
colA 1 13
colA 1 14
colA 1 15
colA 1 16
colA 1 17
colA 1 18
colA 1 19
colA 1 20
colA 1 21
colA 1 22
colA 1 23
colA 1 24
colB 0 1
colB 0 2
colB 0 3
colB 0 4
colB 0 5
colB 0 6
colB 0 7
colB 0 8
colB 0 9
colB 0 10
colB 0 11
colB 0 12
colB 1 13
colB 1 14
colB 1 15
colB 1 16
colB 1 17
colB 1 18
colB 1 19
colB 1 20
colB 1 21
colB 1 22
colB 1 23
colB 1 24
colC 0 1
colC 0 2
colC 0 3
colC 0 4
colC 0 5
colC 0 6
colC 0 7
colC 0 8
colC 0 9
colC 0 10
colC 0 11
colC 0 12
colC 1 13
colC 1 14
colC 1 15
colC 1 16
colC 1 17
colC 1 18
colC 1 19
colC 1 20
colC 1 21
colC 1 22
colC 1 23
colC 1 24
colD 0 1
colD 0 2
colD 0 3
colD 0 4
colD 0 5
colD 0 6
colD 0 7
colD 0 8
colD 0 9
colD 0 10
colD 0 11
colD 0 12
colD 1 13
colD 1 14
colD 1 15
colD 1 16
colD 1 17
colD 1 18
colD 1 19
colD 1 20
colD 1 21
colD 1 22
colD 1 23
colD 1 24
Теперь вся необходимая информация доступна в виде переменная в некоторый момент во время циклов, и нам нужно только собрать строку, которую вы хотите увидеть:
column_prefixes = ["colA", "colB", "colC", "colD"]
for column_prefix in column_prefixes:
for year in range(0, 1 + 1):
line = column_prefix + "_" + str(year + 1) + "_years_back = "
for month in range(year * 12 + 1, (year + 1) * 12 + 1):
line += column_prefix + str(month) + " + "
line = line[:-3]
print(line)
, которая печатает:
colA_1_years_back = colA1 + colA2 + colA3 + colA4 + colA5 + colA6 + colA7 + colA8 + colA9 + colA10 + colA11 + colA12
colA_2_years_back = colA13 + colA14 + colA15 + colA16 + colA17 + colA18 + colA19 + colA20 + colA21 + colA22 + colA23 + colA24
colB_1_years_back = colB1 + colB2 + colB3 + colB4 + colB5 + colB6 + colB7 + colB8 + colB9 + colB10 + colB11 + colB12
colB_2_years_back = colB13 + colB14 + colB15 + colB16 + colB17 + colB18 + colB19 + colB20 + colB21 + colB22 + colB23 + colB24
colC_1_years_back = colC1 + colC2 + colC3 + colC4 + colC5 + colC6 + colC7 + colC8 + colC9 + colC10 + colC11 + colC12
colC_2_years_back = colC13 + colC14 + colC15 + colC16 + colC17 + colC18 + colC19 + colC20 + colC21 + colC22 + colC23 + colC24
colD_1_years_back = colD1 + colD2 + colD3 + colD4 + colD5 + colD6 + colD7 + colD8 + colD9 + colD10 + colD11 + colD12
colD_2_years_back = colD13 + colD14 + colD15 + colD16 + colD17 + colD18 + colD19 + colD20 + colD21 + colD22 + colD23 + colD24
с каждой итерации l oop из месяцев добавляет " + "
, в конце после последнего месяца есть лишние +
, которые нам нужно удалить с помощью line = line[:-3]
, который удаляет последние 3 символа нашей строки. Конечно, вместо print
вы также можете добавить строку в список.
Дальнейшее чтение: приведенный выше код отлично подходит, но если вы заинтересованы в другом стиле кодирования, посмотрите на использование f-строки и списки.
Последнее замечание: вам может не понадобиться писать эти строки в Python, возможно, это возможно сделать только с SQL - но это другой вопрос.