Python для цикла изменения фрейма данных

#python #pandas

#python #pandas

Вопрос:

Как использовать цикл for для выполнения следующей операции?

 df_1=pd.concat([df_ab1,df_xy1], axis=1)  
df_2=pd.concat([df_ab2,df_xy2], axis=1)    
df_3=pd.concat([df_ab3,df_xy3], axis=1)   
df_4=pd.concat([df_ab4,df_xy4], axis=1)    
df_5=pd.concat([df_ab5,df_xy5], axis=1)  
df_6=pd.concat([df_ab6,df_xy6], axis=1)    
df_7=pd.concat([df_ab7,df_xy7], axis=1)  
df_8=pd.concat([df_ab8,df_xy8], axis=1)  
df_9=pd.concat([df_ab9,df_xy9], axis=1)  
  

Я думал о чем-то вроде этого

 for i in np.arange(9):  
    df_str(i 1)=pd.concat([df_ab str(i 1),df_xy str(i 1)], axis=1)  
  

По-видимому, чего-то не хватает.
Заранее большое спасибо!

Комментарии:

1. Не создавайте имена переменных динамически ( df_str(i 1) ). Для этого есть обходные пути, но не делайте этого… Вместо этого выберите структуру списка, которую вы уже имеете в виду. Объявите список df ; инициализируйте его с помощью: df = [] . затем используйте df.append(pd...) для добавления pd объектов. Затем вы можете получить доступ к элементам списка по их индексу ( pd[0] ).

Ответ №1:

Я не рекомендую приведенное ниже решение, но это решит вашу проблему

 variables = locals()
for i in np.arange(9):  
    variables["df_{0}".format(i 1)] = pd.concat([variables["df_ab{0}".format(i 1)],variables["df_xy{0}".format(i 1)]], axis=1)  
  

Комментарии:

1. Согласен, лучшей структурой кода было бы иметь главный df с multiindex

2. Большое спасибо! Кажется, что отсутствует правая квадратная скобка.

3. @ER1CZZ да 🙂 ты понял ~

4. @RichieV Спасибо за комментарий. Я попытаюсь использовать основной df.