Столбцы не объединяются правильно. Не перезаписывается пустые столбцы

#excel #python-3.x #pandas

#excel #python-3.x #pandas

Вопрос:

При объединении файлов / листов .xlsx в python данные помещаются под пустыми столбцами. Смотрите пример ниже

Я пробовал несколько разных способов объединить файлы, но все они объединяют их таким образом.

 excel_files= [src_code,dst_code]

df = pd.concat([pd.read_excel(f) for f in excel_files])
df.to_csv(filtered_comb_excel,index=False)

      ColumnA             ColumnB       ColumnC       ColumnD
       Data                Data 
       DAta                Data          
       DAta                Data          
                                         Data          DAta
                                         Data          Data
  

Один файл содержит данные в столбцах A и B, другой файл содержит данные в столбцах C и D.
По сути, я хочу, чтобы столбец C помещался в столбец C, начиная со строки 1, то же самое с A, B и D:

  ColumnA             ColumnB       ColumnC       ColumnD
       Data            Data         Data          Data
       DAta            Data         Data          Data
       DAta            Data         DAta          DAta
  

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

1. попробуйте pd.concat([pd.read_excel(f).reset_index(drop=True) for f in excel_files], axis=1)

Ответ №1:

Вы можете попробовать с reset_index , затем объединить с axis=1

 df = pd.concat([pd.read_excel(f).reset_index(drop=True) for f in excel_files],axis=1)
  

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

1. Похоже, это сработало. Есть несколько странностей, которые мне нужно изучить сейчас и посмотреть, связано ли это с другим моим кодом. Пример: данные помещаются в столбцы C, D, E, F с заголовками в A, B, G, H, вместо того, чтобы просто помещать данные в A, B, C, D. Также похоже, что в первой строке исходного Excel могут отсутствовать данные.

Ответ №2:

Если ваши фреймы данных имеют уникальный ключ, вы могли бы попробовать:

  df = reduce(lambda left,right: pd.merge(left,right,on='key'), excel_files)
  

или какой-либо вариант, основанный на вашем df

  df = reduce(lambda left,right: pd.merge(left,right,right_on='rightkey', left_on='leftkey'), excel_files)
  

Не уверен, не видя dfs.