Генерация нескольких фреймов данных pandas в цикле с переменными именами переменных

#python #pandas #loops #variables #concatenation

#python #pandas #циклы #переменные #конкатенация

Вопрос:

Я пытаюсь сгенерировать несколько фреймов данных pandas в цикле, однако у меня возникают трудности с определениями переменных. Первая итерация str(test[i-1]) возвращает A , поэтому я предположил, что могу объединить эту строку с другой строкой для создания переменной, первая переменная должна быть определена как A_data_columns=['Test1','Test2'] , однако это выдает ошибку (которую я наполовину ожидал), мне просто интересно, есть ли способ сделать это правильно или, возможно, лучший способ?

 test=[]
for i in range(1,5):
    test.append(chr(ord('@') i))
    str(test[i-1]) '_data_columns'=['Test1', 'Test2']
    str(test[i-1]) '_dataframe'=pd.DataFrame(columns=str(test[i-1]) '_data_columns')
    str(test[i-1]) '_dataframe'
    
    
    

 

Ошибка:

 SyntaxError: cannot assign to operator
 

Ответ №1:

str(test[i-1]) '_data_columns' это строка, а не имя переменной. Вы не можете присвоить значение строке, это не имеет смысла.

Одним из способов решения этой проблемы было бы использование словаря. Таким образом, вы можете сопоставить строку с объектом, что вы и пытаетесь сделать.

 test=[]
test_dict = dict()
for i in range(1,5):
    test.append(chr(ord('@') i))
    test_dict[str(test[i-1]) '_data_columns'] = ['Test1', 'Test2']
    test_dict[str(test[i-1]) '_dataframe'] = pd.DataFrame(columns=str(test[i-1]) '_data_columns')
 

Затем вы можете получить доступ к значениям следующим образом:

 print(test_dict['A_data_columns'])
# should print ['Test1', 'Test2']