У меня есть набор данных с более чем 4000 строками, которые соответствуют часам солнечного света в течение всего года.
Я разбил этот фрейм данных в списке по месяцам, поэтому у меня есть несколько часов солнечного света в список из 12 данных. Вот пример.
index YYYY MM DD H DOY ANGLE AZIMUTH
812 2020 3 21 6.0 81 0.570550 89.931404
813 2020 3 21 7.0 81 11.781984 99.975618
814 2020 3 21 8.0 81 22.634332 110.842581
815 2020 3 21 9.0 81 32.658711 123.478690
816 2020 3 21 10.0 81 41.147775 139.003890
Итак, у меня есть список, в который вложено двенадцать фреймов данных, подобных этому.
Теперь я хочу выполнить итерацию по месяцам в функции, которая вычисляет теневые проекции.
Первый шаг, определите мою функцию месяца:
def month(n_month):
df_month = df.loc[df['MM'] == n_month]
return df_month
Второй шаг - сохранить месяцы в списке:
month_list = []
for i in range(1, 13):
month_list.append(month(i))
Третий шаг, итерация month_list
в предварительно заданной функции: Эта функция заключается в назначении азимута и угла места для каждого часа солнечного света каждого месяца:
def shade_array (index):
azimut = df.AZIMUT[index]
altitude = df.ANGLE[index]
shade = hillshade_beta(elevation, azimuth = azimut, altitude = altitude)
return shade
Выходные данные - это массив.
И вот где я застреваю при попытке чтобы перебрать эту функцию над кадром данных evary в списке месяцев и сохранить массивы в новом списке:
array_list = []
for i in month_list:
array_list.append(shade_array(i))
Это приводит к следующему сообщению об ошибке:
TypeError: Indexing a Series with DataFrame is not supported, use the appropriate DataFrame column
Можно ли выполнить итерацию списка фреймов данных?
Ожидаемый результат - список из двенадцати списков массивов, каждый массив, вложенный в этот список второго порядка, принадлежит значениям тени на пиксель в растре.