在实际工作中经常会遇到将一个工作簿中的不同工作表汇总到一个表里,如需汇总的各工作表列名一致,用VBA非常方便多表自动合并,但也会遇到列名不一致的工作表合并。如下:4-1、2表和4-3表中所有列一致,但4-3表中缺少‘车间任务时间 H(以R栏机床名称填写)’这一列:
如果强行用使用VBA工具合并,将会出现错列的情况:这是因为VBA按表格的‘A’,‘B‘...列进行合并,所以遇到表头不一致的情况,会出现列错乱的情形,但是Python能完美解决这一问题,因为Pandas是按’列名‘合并,既相同的列名会合并在一起,不相同的列名会单独存放,想实现以上功能同样要使用到for循环: for sheet in sheets_to_merge:#循环读取除各工作表数据
df = pd.read_excel(file_path, sheet_name=sheet)
dfs.append(df)
#使用pd.concat对读取数据进行合并:
merged_df = pd.concat(dfs, ignore_index=True, sort=False)
完整的代码如下(加入容错功能):
看下效果:
完美的将相同列名的数据合并在一起,所以遇到多张表头不一致的表格合并时,强烈推荐Python.