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 相关文章推荐
Python创建模块及模块导入的方法
May 27 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
python实现发送邮件功能
Jul 22 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
python中实现字符串翻转的方法
Jul 11 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
Python零基础入门学习之输入与输出
Apr 03 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
详解Python的三种拷贝方式
Feb 11 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
基于python 将列表作为参数传入函数时的测试与理解
Jun 05 Python
Python快速优雅的批量修改Word文档样式
May 20 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
第三节--定义一个类
2006/11/16 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
js查找父节点的简单方法
2008/06/28 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
javascript实现验证IP地址等相关信息代码
2015/05/10 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
JQuery用户名校验的具体实现
2016/03/18 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
Python实现发送email的几种常用方法
2014/08/18 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
Python给图像添加噪声具体操作
2019/03/03 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
python 写一个水果忍者游戏
2021/01/13 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
html5实现滑块功能之type="range"属性
2020/02/18 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
EJB与JAVA BEAN的区别
2016/08/29 面试题
村官学习十八大感想
2014/01/15 职场文书
市场营销管理制度
2014/01/29 职场文书
李开复演讲稿
2014/05/24 职场文书
一份文言文检讨书
2014/09/13 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书