2016-03-01 4 views
-1

У меня есть несколько фреймов данных с именем data1, data2, data3, data4, ... data100. Как сохранить их в списке, чтобы я мог построить их с помощью цикла for.Создание списка из нескольких фреймов данных

Заранее спасибо.

+0

Вы можете присоединиться к ним в списке, подобном 'l = [data1, data2, ...]', а затем итерации через этот список вы можете построить каждый файл данных –

+0

@AntonProtopopov Спасибо, возможно, лучший вопрос заключался в том, как создать этот список переменных при наличии большого числа кадров данных? – Sepehr

ответ

1

Проблема, с которой вы столкнулись, является симптомом использования нумерованных переменных.

Вы можете полностью избежать проблем с помощью списка DataFrames (например data) вместо пронумерованных переменных (data1, data2, data3 и т.д.)

Хитрость заключается в том, чтобы избежать создания нумерованных переменных первое место. Если у вас есть код формы

data1 = ... 
data2 = ... 
data3 = ... 

Попробуйте заменить его чем-то вроде

data = [] 
data.append(...) 
data.append(...) 
data.append(...) 

или еще лучше, использовать список понимание или для цикла, чтобы определить data. Для более конкретных предложений покажите нам код, определяющий пронумерованные переменные.

Тогда вы могли бы цикл по DataFrames с

for df in data: 
    df.plot(...) 

Если по каким-то причинам вы не можете предотвратить (кто-то еще?) Из определения пронумерованных переменных, то вы можете использовать globals() (или locals()) для доступа к пронумерованных переменных программно:

g = globals() 
data = [g['data{}'.format(i)] for i in range(1, 101)] 

globals() возвращает словарь, ключи которого строка предст ионами имен в глобальном пространстве имен. Связанными значениями являются объекты Python, привязанные к этим именам. Таким образом, вы можете использовать globals() для поиска значений, связанных с именами переменных на основе строкового представления этих имен переменных. Используйте имена locals(), если имена переменных определены в локальном (а не глобальном) пространстве имен.

По-прежнему старайтесь избегать использования пронумерованных переменных. Это использование globals() является всего лишь обходным решением для проблем, с которыми сталкивается кто-то другой. Использование форматирования строк для поиска имен переменных не является отличным стилем программирования, когда достаточно простого целочисленного индексации (списка). Лучшее решение состоит в том, чтобы убедить кого-то прекратить использовать нумерованные переменные и вместо этого доставить значения в списке.

+0

Проблема в том, что я не могу контролировать, как хранятся данные. Я согласен с тем, что список и график из этого списка являются разумными, но создание этого списка является проблемой, если число кадров данных достаточно велико. – Sepehr

Смежные вопросы