介绍
这篇文章将为大家详细讲解有关Python如何实现合并excel表格,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
需求
将一个文件夹中的excel表格合并成我们想要的形式,主要要熊猫中的<代码> concat() 代码>函数
思路
用操作系统库将所需要处理的表格放到同一个列表中,然后遍历列表,依次把所有文件纵向连接起来。
最开始的第一种思路是先拿一个文件出来,然后让这个文件依次去和列表中的剩余文件合并;
第二种是用文件夹中第一个文件和剩余的文件合,并使用<代码>范围(len(文件))> 代码,可以省去单独取第一个文件的步骤。
遇到的问题
读取
好久没写过这个了,竟然在读取的时候出了很多错误,花了很多时间,下面按时间顺序小结一下
因为之前看到有人直接在<代码> pd.read_excel() 代码>后面操作,不需要像我以前一样分开操作
#以前的操作方式,需要占用三行 时间=df pd.read_excel (" # 39; C: \ 1. xlsx& # 39;,, sheet_name =, & # 39;设备检测_空调伴侣& # 39;) 时间=temp_columns [& # 39; & # 39; & # 39; & # 39;】 时间=df_1 df (temp_columns) .dropna () #但我在进阶的过程中,格式弄错了,导致一直报的错 df =, pd.read_excel (" # 39; C: \ 1. xlsx& # 39;,, sheet_name =, & # 39;设备检测_空调伴侣& # 39;)。[[& # 39;采集时间& # 39;][& # 39;功率E (W) & # 39;]] 祝辞祝辞祝辞df =, pd.read_excel (" # 39; C: \ 1. xlsx& # 39;,, sheet_name =, & # 39;设备检测_空调伴侣& # 39;)。[[& # 39;采集时间& # 39;][& # 39;功率E (W) & # 39;]], ^ SyntaxError: invalid 语法 #发现多了个“。”,用pd读取的excel已经是dataframe的格式了,提取直接用列表的方式就行,加“。”是表示用pd中的函数,完全不同,修正后,再运行,又报的错…… df =, pd.read_excel (" # 39; C: \ 1. xlsx& # 39;,, sheet_name =, & # 39;设备检测_空调伴侣& # 39;)[[& # 39;采集时间& # 39;][& # 39;功率E (W) & # 39;]] 在祝辞祝辞TypeError: list indices must be integers 或是片,not str #发现列表中的子列表元素间忘记用”、“分隔了,修正,再运行 df =, pd.read_excel (" # 39; C: \ 1. xlsx& # 39;,, sheet_name =, & # 39;设备检测_空调伴侣& # 39;)[[& # 39;采集时间& # 39;],[& # 39;功率E (W) & # 39;]] 祝辞祝辞祝辞TypeError: unhashable 类型:,& # 39;列表# 39; #说实话,当时心态有点崩,但还是仔细找了找原因,报错,列表是不可拆分的类型。再对比以前的代码,才发现问题所在。 df =, pd.read_excel (" # 39; C: \ 1. xlsx& # 39;,, sheet_name =, & # 39;设备检测_空调伴侣& # 39;)[[& # 39;采集时间& # 39;,& # 39;功率E (W) & # 39;]]
需要用双层列表,外面那层是用于读取dataframe,里面那层是索引的集合
完整代码
思路1:
#, - *安康;编码:,utf-8 - *安康; import numpy  as np import pandas  as pd import 操作系统 #改变当前的路径 os.chdir (" # 39; C: \用户桌面\郝\ \重写数据整理\源数据& # 39;) #将当前目录下的文件以列表的形式存放 时间=file os.listdir (“。/? df_0 =, pd.read_excel (" # 39; C: \用户桌面\ \郝\重写数据整理\ 143 nncz01_m_2017 - 06. xlsx& # 39;,, sheet_name =, & # 39;设备检测_空调伴侣& # 39;)[[& # 39;采集时间& # 39;,& # 39;功率E (W) & # 39;]] .dropna () #打印(df_0), # df_0是第一个,依次和循环里面的每一个表做纵向连接 for aa, excel 列举拷贝(文件),:,,# enumerate 遍历,aa 返回序列,便于计数和监视 打印才能(& # 39;当前正在处理的文件:& # 39;,excel) df_1 才能=,pd.read_excel (excel,, sheet_name =, & # 39;设备检测_空调伴侣& # 39;)[[& # 39;采集时间& # 39;,& # 39;功率E (W) & # 39;]] .dropna () #才能打印(df_1) df_0 才能=,pd.concat ([df_0 df_1], ignore_index=True,轴=0) #才能打印(df_0) df_0.to_excel (" # 39; C: \用户桌面\ \郝\ output3.xlsx& # 39;,,指数=None)
思路二:
#, - *安康;编码:,utf-8 - *安康; import numpy  as np import pandas  as pd import 操作系统 #改变当前的路径 os.chdir (" # 39; C: \用户桌面\郝\ \重写数据整理\源数据& # 39;) #将当前目录下的文件以列表的形式存放 时间=file os.listdir (“。/? df_0 =, pd.read_excel(文件[0],sheet_name =, & # 39;设备检测_空调伴侣& # 39;)[[& # 39;采集时间& # 39;,& # 39;功率E (W) & # 39;]] .dropna () #打印(df_0), # df_0是第一个,依次和循环里面的每一个表做纵向连接 for 小姐:拷贝范围(len(文件),:,,# enumerate 遍历,aa 返回序列,便于计数和监视 打印才能(& # 39;当前正在处理的文件:& # 39;,文件[我]& # 39;第{}/{}个& # 39;.format (i + 1, len(文件)+ 1)) df_1 才能=,pd.read_excel(文件[我],sheet_name =, & # 39;设备检测_空调伴侣& # 39;)[[& # 39;采集时间& # 39;,& # 39;功率E (W) & # 39;]] .dropna () #才能打印(df_1) df_0 才能=,pd.concat ([df_0 df_1], ignore_index=True,轴=0) #才能打印(df_0) df_0.to_excel (" # 39; C: \用户桌面\ \郝\ output5.xlsx& # 39;,,指数=None)Python如何实现合并excel表格