Цикл Python с использованием обычных слов (элементы, которые не являются объектами) - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь перебрать список обычных слов в python через панд "read_excel", и в идеале элементы цикла не должны быть определены как объекты Python любого типа.Причина в том, что мне нужно, чтобы они были строковыми в одной области, а в другой - чтобы они были доступны в качестве имени фрейма данных ...

... кажется, я столкнулся с компромиссом между их созданиемстрока или нет: наличие в них строки в цикле не позволяет им быть именем элемента данных (вариант 1 ниже), тогда как наличие у них не строки (то, что я называю «обычным словом») позволяет им быть элементом данныхимя, но вылетает функция "read_excel" (вариант 2 ниже).Дополнительные сведения - я пытаюсь превратить 3 файла Excel в кадры данных панд (файлы Excel называются loopdata1.xlsx, loopdata2.xlsx, loopdata3.xlsx).Спасибо за внимание!

Вариант 1

list1 = ['loopdata1', 'loopdata2', 'loopdata3']
for x in list1:
    x = pd.read_excel(x + '.xlsx')  

Вариант 2

list2 = [loopdata1, loopdata2, loopdata3]
for x in list2:
    y = str(x)
    x = pd.read_excel(y + '.xlsx')  

loopdata1.head()   

1 Ответ

0 голосов
/ 08 марта 2019

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

То, что вы называете «обычным словом», - это не вещь. Когда вы говорите

list2 = [loopdata1, loopdata2, loopdata3]

это , а не список слов loopdata1, loopdata2 и loopdata3. Это список, первый элемент которого имеет любое значение, присвоенное переменной с именем loopdata1; и чей 2-й элемент имеет любое значение, присвоенное переменной с именем loopdata2; и т.д.

На самом деле список не содержит сведений о том, что его первое значение получено из переменной с именем loopdata1; он просто хранит свою копию значения. (Когда ваши переменные являются объектными ссылками или похожими, иногда может показаться, что то, что я только что сказал, не соответствует действительности; тот же базовый объект. Таким образом, изменения, сделанные через одну ссылку, можно увидеть через другую, как будто переменные каким-то образом связаны, но на самом деле они являются просто независимыми копиями одной ссылки.)

Не видя больше вашего кода, я не могу знать, какие значения вы фактически присваиваете в своем «варианте 2». Это может быть значение None или другое значение, которое вы инициализировали для переменных (loopdata1, loopdata2 и loopdata3).

Теперь вы говорите, что хотите использовать значения в качестве «имен данных»; что из вашего кода означает, что вы хотите назначить созданный из loopdata1.xls фрейм данных переменной с именем loopdata1. Если вы хотите, чтобы это зависело от данных в списке, вы не можете сделать это точно (по крайней мере, ни в коем случае); но вы можете сделать что-то очень близко

dataframes = {}
list1 = ['loopdata1', 'loopdata2', 'loopdata3']
for x in list1:
    dataframes[x] = pd.read_excel(x + '.xlsx')  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...