#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.