#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']