pandas合并excel的多个sheet

表格内容如下:

pandas合并excel的多个sheet_第1张图片

现在要做的是,把6个sheet合并成一个表格。

1.excel合并工作表

首先,探讨一下直接用excel来解决这个问题,在excel2016及以后的版本中,有一个强大的PowerQuery查询:

pandas合并excel的多个sheet_第2张图片

选择文件后:

pandas合并excel的多个sheet_第3张图片

 点“编辑”以后,大概如下:

pandas合并excel的多个sheet_第4张图片

 网上有些人的版本中有“将查询追加为新查询”这个功能,但是我的excel2016中没有这个选项,只能点击“追加查询"这个功能:

pandas合并excel的多个sheet_第5张图片

 上图的意思是将sheet2追加到sheet1中去,追加后sheet1的内容如下:

pandas合并excel的多个sheet_第6张图片

 我对这个powerQuery不是很熟练,上面合并的工作表一次只能合并一张工作表,看起来效率也不算高,暂时还不晓得其它方法。除了这种方法以外,可能只有使用VBA宏来解决这个问题了。

2.pandas合并工作表

四个字:非常简单!

简单得出乎的意料!

代码如下:

import pandas as pd
#依次读取前面6个工作表到DataFrame中,dfs里面是由6个DataFrame组成的数组
dfs = [pd.read_excel("test.xls",sheet_name=index) for index in range(6)]
#连接dfs里面的6个DataFrame
pd.concat(dfs).to_excel("text1.xlsx")

 三行代码搞定!

pandas合并excel的多个sheet_第7张图片

 而且居然自动忽略掉其它工作表的表头,只保留第一个工作表的标题栏,这确实很有意思,非常赞。

3.pandas合并工作表第二种方法

 依然非常简单:

import pandas as pd
#sheet_name=None的意思是,一次性将所有的工作表都读取出来
dfs2 = pd.read_excel("test.xls",sheet_name=None)
pd.concat(dfs2).to_excel("text.xlsx")

执行结果如下:

pandas合并excel的多个sheet_第8张图片

 可以看出,除了前面多了一行索引列以外,其它内容没有变化,依然没有标题栏。

总结

可以看出,如果要在excel中完成合并工作表并不容易,对excel版本有要求,或者VBA。而采用pandas则非常简单,基本上就两行代码,效果出其的好!

你可能感兴趣的:(python,python)