У меня есть несколько массивов, и я хочу назначить их столбцам данных и сохранить их в списке:
temp = pd.date_range(date_from, date_to)
for index in range(len(a_id)):
df = pd.DataFrame()
df['date'] = temp
df['system_id'] = a_id[index]
df['simulated_yield_in_kWh'] = pr_daily[:, index]
df['gloabl_irradiance_tilted_in_kWh_per_m2'] = rad_daily[:, index]
finalDataframes.append(df)
Проблема в том, что массивы имеют разную длину. pr_daily и rad_daily имеют длину 342, а a_id имеет длину 1. Как я могу присвоить идентификатор всем полям фрейма данных? В настоящее время он заполнен NaN.
Также я не могу назначить дату, потому что она имеет длину 344.
Обновлено: я решил вторую проблему, обрезав:
temp = pd.date_range(date_from, date_to)[:len(pr_daily)]
Я в замешательстве. Если a_id имеет длину 1, то для чего нужен цикл for?
Это не длина 1. Это длина систем, которые у меня есть. И это переменный диапазон.






Просто сделайте
df['system_id] = a_id
Он будет автоматически транслироваться на нужную длину.
Если a_id представляет собой массив длины 1, выполните df['system_id'] = a_id[0]
Я пробовал это, но получаю сообщение об ошибке «ValueError: длина значений не соответствует длине индекса». Также мне нужно индексированное значение массива a_id.
@TimoK вам нужно сделать его скаляром, чтобы он работал. Делай df['system_id'] = a_id[0]
pd.DataFrame({'date' : temp, ... )затем просто добавьте в новый столбец простую трансляцию