#pandas #dataframe #for-loop #random
Вопрос:
Я хотел бы создать несколько фреймов данных, содержащих четыре столбца случайных чисел, и сохранить их в виде отдельных файлов Excel. Я не могу этого достичь, хотя знаю, что это как-то связано с циклом for. Я ценю любую помощь в этом отношении. Мой код выглядит следующим образом:
import random import numpy as np locus_list=['0 to 15',' 15 - 30', ' 45 - 60',' 60 - 75',' 75 - 90','-30 - -45', '-45 - -60','-60 - -75', '-75 - -90']; heights_list=[8, 11, 14, 17, 20, 23, 26, 29, 32]; random_heights_list =random.choices(heights_list, k=9) print(random_heights_list); Surface_selection=['yes','no']; Surface_selection_list =np.array(random.choices(Surface_selection, k=9)) print(Surface_selection_list); import pandas as pd df = pd.DataFrame(list(zip(locus_list,random_heights_list,Surface_selection_list,Surface_selection_list)),index=['1','2','3','4','5','6','7','8','9'],columns=['Locus position','Building heights (m)', 'Roof selection for SE', 'Facade selection for SE']); df
Комментарии:
1. где ваша петля for?
2. Да, где мне это добавить? После df?
3. где у тебя этот твой сценарий? я бы заподозрил, что часть кода df, которая у вас есть, должна находиться в цикле for, нет?
4. для i в диапазоне (5): df = pd.DataFrame(list(zip(locus_list,random_heights_list,Surface_selection_list,Surface_selection_list)),index=[‘1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9’],columns=[‘Положение локуса»,»Высота здания (м)», «Выбор крыши для SE», «Выбор фасада для SE»]); печать(df)
5. Я пробовал это, но это повторяет один и тот же кадр данных 5 раз. Мне нужно 5 разных кадров данных.
Ответ №1:
То, как у вас установлены переменные, вам нужно, чтобы они все были в вашем цикле. Случайные функции вызывались только один раз и использовали переменные, которые создавались каждый раз.
for i in range (5): locus_list=['0 to 15',' 15 - 30', ' 45 - 60',' 60 - 75',' 75 - 90','-30 - -45', '-45 - -60','-60 - -75', '-75 - -90'] heights_list=[8, 11, 14, 17, 20, 23, 26, 29, 32] random_heights_list =random.choices(heights_list, k=9) Surface_selection=['yes','no'] Surface_selection_list =np.array(random.choices(Surface_selection, k=9)) df = pd.DataFrame(list(zip(locus_list,random_heights_list,Surface_selection_list,Surface_selection_list)),index=['1','2','3','4','5','6','7','8','9'],columns=['Locus position','Building heights (m)', 'Roof selection for SE', 'Facade selection for SE']) print(df)