Python实现合并excel表格的方法分析


Posted in Python onApril 13, 2019

本文实例讲述了Python实现合并excel表格的方法。分享给大家供大家参考,具体如下:

需求

将一个文件夹中的excel表格合并成我们想要的形式,主要要pandas中的concat()函数

思路

用os库将所需要处理的表格放到同一个列表中,然后遍历列表,依次把所有文件纵向连接起来。
最开始的第一种思路是先拿一个文件出来,然后让这个文件依次去和列表中的剩余文件合并;
第二种是用文件夹中第一个文件和剩余的文件合并,使用range(1,len(file)),可以省去单独取第一个文件的步骤。

遇到的问题

读取

好久没写过这个了,竟然在读取的时候出了很多错误,花了很多时间,下面按时间顺序小结一下
因为之前看到有人直接在pd.read_excel()后面操作,不需要像我以前一样分开操作

#以前的操作方式,需要占用三行
df = pd.read_excel(r'C:.\1.xlsx', sheet_name = '设备检测_空调伴侣')
temp_columns = ['','']
df_1 = df[temp_columns].dropna()
#但我在进阶的过程中,格式弄错了,导致一直报错
df = pd.read_excel(r'C:.\1.xlsx', sheet_name = '设备检测_空调伴侣').[['采集时间']['功率E(W)']]
>>>df = pd.read_excel(r'C:.\1.xlsx', sheet_name = '设备检测_空调伴侣').[['采集时间']['功率E(W)']] ^
SyntaxError: invalid syntax
#发现多了个“.”,用pd读取的excel已经是dataframe的格式了,提取直接用列表的方式就行,加“.”是表示用pd中的函数,完全不同,修正后,再运行,又报错。。。
df = pd.read_excel(r'C:.\1.xlsx', sheet_name = '设备检测_空调伴侣')[['采集时间']['功率E(W)']]
>>>TypeError: list indices must be integers or slices, not str
#发现列表中的子列表元素间忘记用“,”分隔了,修正,再运行
df = pd.read_excel(r'C:.\1.xlsx', sheet_name = '设备检测_空调伴侣')[['采集时间'],['功率E(W)']]
>>>TypeError: unhashable type: 'list'
#说实话,当时心态有点崩,但还是仔细找了找原因,报错,列表是不可拆分的类型。再对比以前的代码,才发现问题所在。
df = pd.read_excel(r'C:.\1.xlsx', sheet_name = '设备检测_空调伴侣')[['采集时间','功率E(W)']]

需要用双层列表,外面那层是用于读取dataframe,里面那层是索引的集合

完整代码

思路1:

# -*- coding: utf-8 -*- 
import numpy as np
import pandas as pd
import os
#改变当前的路径
os.chdir(r'C:\Users\hao\Desktop\重写数据整理\源数据')
#将当前目录下的文件以列表的形式存放
file = os.listdir("./")
df_0 = pd.read_excel(r'C:\Users\hao\Desktop\重写数据整理\143NNCZ01_M_2017-06.xlsx', sheet_name = '设备检测_空调伴侣')[['采集时间','功率E(W)']].dropna()
#print(df_0) #df_0是第一个,依次和循环里面的每一个表做纵向连接
for aa,excel in enumerate(file) :  #enumerate 遍历,aa 返回序列,便于计数和监视
  print('当前正在处理的文件:',excel)
  df_1 = pd.read_excel(excel, sheet_name = '设备检测_空调伴侣')[['采集时间','功率E(W)']].dropna()
  #print(df_1)
  df_0 = pd.concat([df_0,df_1],ignore_index=True, axis=0)
  #print(df_0)
df_0.to_excel(r'C:\Users\hao\Desktop\output3.xlsx', index=None)

思路二:

# -*- coding: utf-8 -*- 
import numpy as np
import pandas as pd
import os
#改变当前的路径
os.chdir(r'C:\Users\hao\Desktop\重写数据整理\源数据')
#将当前目录下的文件以列表的形式存放
file = os.listdir("./")
df_0 = pd.read_excel(file[0], sheet_name = '设备检测_空调伴侣')[['采集时间','功率E(W)']].dropna()
#print(df_0) #df_0是第一个,依次和循环里面的每一个表做纵向连接
for i in range(1,len(file)) :  #enumerate 遍历,aa 返回序列,便于计数和监视
  print('当前正在处理的文件:',file[i],'第{}/{}个'.format(i+1,len(file)+1))
  df_1 = pd.read_excel(file[i], sheet_name = '设备检测_空调伴侣')[['采集时间','功率E(W)']].dropna()
  #print(df_1)
  df_0 = pd.concat([df_0,df_1],ignore_index=True, axis=0)
  #print(df_0)
df_0.to_excel(r'C:\Users\hao\Desktop\output5.xlsx', index=None)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
精确查找PHP WEBSHELL木马的方法(1)
Apr 12 Python
Python中函数的参数传递与可变长参数介绍
Jun 30 Python
微信跳一跳游戏python脚本
Apr 01 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
May 04 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
用Python读取几十万行文本数据
Dec 24 Python
Python使用sqlalchemy模块连接数据库操作示例
Mar 13 Python
Python3多目标赋值及共享引用注意事项
May 27 Python
Python异常模块traceback用法实例分析
Oct 22 Python
Python生成器next方法和send方法区别详解
May 30 Python
pycharm 关掉syntax检查操作
Jun 09 Python
Python实现爬取并分析电商评论
Jun 19 Python
Python Image模块基本图像处理操作小结
Apr 13 #Python
python使用pymongo操作mongo的完整步骤
Apr 13 #Python
Python实现去除图片中指定颜色的像素功能示例
Apr 13 #Python
python mac下安装虚拟环境的图文教程
Apr 12 #Python
python中的print()输出
Apr 12 #Python
Python面向对象程序设计类的多态用法详解
Apr 12 #Python
Python中format()格式输出全解
Apr 12 #Python
You might like
基于mysql的论坛(6)
2006/10/09 PHP
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
php计算年龄精准到年月日
2015/11/17 PHP
发布一个基于javascript的动画类 Fx.js
2010/11/05 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
javascript验证身份证号
2015/03/03 Javascript
JQuery中DOM事件冒泡实例分析
2015/06/13 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
Python中__new__与__init__方法的区别详解
2015/05/04 Python
python的unittest测试类代码实例
2017/12/07 Python
浅谈python正则的常用方法 覆盖范围70%以上
2018/03/14 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
数据库基础的一些面试题
2012/02/25 面试题
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
Windows和Linux动态库应用异同
2016/04/17 面试题
团委副书记工作总结
2015/08/14 职场文书
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js