У меня есть несколько фреймов данных с именем data1, data2, data3, data4, ... data100. Как сохранить их в списке, чтобы я мог построить их с помощью цикла for.Создание списка из нескольких фреймов данных
Заранее спасибо.
У меня есть несколько фреймов данных с именем data1, data2, data3, data4, ... data100. Как сохранить их в списке, чтобы я мог построить их с помощью цикла for.Создание списка из нескольких фреймов данных
Заранее спасибо.
Проблема, с которой вы столкнулись, является симптомом использования нумерованных переменных.
Вы можете полностью избежать проблем с помощью списка 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()
является всего лишь обходным решением для проблем, с которыми сталкивается кто-то другой. Использование форматирования строк для поиска имен переменных не является отличным стилем программирования, когда достаточно простого целочисленного индексации (списка). Лучшее решение состоит в том, чтобы убедить кого-то прекратить использовать нумерованные переменные и вместо этого доставить значения в списке.
Проблема в том, что я не могу контролировать, как хранятся данные. Я согласен с тем, что список и график из этого списка являются разумными, но создание этого списка является проблемой, если число кадров данных достаточно велико. – Sepehr
Вы можете присоединиться к ним в списке, подобном 'l = [data1, data2, ...]', а затем итерации через этот список вы можете построить каждый файл данных –
@AntonProtopopov Спасибо, возможно, лучший вопрос заключался в том, как создать этот список переменных при наличии большого числа кадров данных? – Sepehr