pandas合并excel的多个sheet

表格内容如下:

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

1.excel合并工作表

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

选择文件后:

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

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

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

 我对这个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")

 三行代码搞定!

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

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")

执行结果如下:

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

总结

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值