Можно ли создать циклом несколько переменных?

Можно ли создать циклом несколько переменных, заменяя в data_1 - цифру 1 и т. д.?

Задача: подгрузить 20 csv-файлов в 20 датафреймов. Можно вручную, но напрашивается цикл.

data_1 = pd.read_csv('feature_1.csv', sep = ',', names=['id','feature_1'])
data_2 = pd.read_csv('feature_2.csv', sep = ',', names=['id','feature_2'])

и т.д.

Можно ли как-то заменить "1" в переменных и таки образом циклом пробежаться?

Заранее спасибо за помощь.


Ответы (1 шт):

Автор решения: ganz

Можно функцией exec, но это вызывает проблемы с безопасностью. Есть варианты использовать генератор списков

data=[pd.read_csv('feature_'+str(it)+'.csv', sep = ',', names=['id','feature_'+str(it)] for it in range(21))]
data=[pd.read_csv(it) for it in ['filea','fileb']]
#доступ осуществляется как
data[1] #где 1 номер файла
#либо так
data=[]
for it in range(1,21):
  data.append(pd.read_csv('prefix_of_filename_'+str(it)+'.postfix_file_name'))

Последний вариант более предпочтителен, так как он более удобочитаем

→ Ссылка