python按列索引提取文件夹内所有excel指定列汇总(示例代码)
作者:用余生去守护 发布时间:2021-11-08 09:46:50
标签:python,excel,指定列
前言
一、情景描述
情景一:
文件夹内有很多excel数据,包含的数据格式一样,我们需要提取每个文件中指定的几列数据汇总到一个文件中(因为是按列索引提取,所以列的顺序可以不一样)
汇总后:
二、python汇总
注意事项:
文件所在文件夹内只能有运行文件.py,和需要汇总的文件,不能有其它文件夹,否则会出现运行错误;
运行第二遍时需要将第一遍运行得到的结果文件res.xlsx删除,否则也会出现运行错误;
代码如下(示例):
# -*- coding:utf-8 –*-
import os
import pandas as pd
# 输入参数为excel表格所在目录
def to_one_excel(dir):
dfs = []
# 遍历文件目录,将所有表格表示为pandas中的DataFrame对象
# for root_dir, sub_dir, files in os.walk(r'' + dir): # 第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
for root_dir, sub_dir, files in os.walk(dir): # 第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
for file in files:
if file.endswith('xlsx'):
# 构造绝对路径
file_name = os.path.join(root_dir, file)
# df = pd.read_excel(file_name)
df_1 = list(pd.read_excel(file_name, nrows=1)) # 读取excel第一行数据并放进列表
# excel第一行数据返回列表
print(file_name)
print(type(df_1))
print(df_1)
# 根据第一行列名获取每个文件中需要列的列索引,返回索引数值
suo_yin_1 = df_1.index("人员")
suo_yin_2 = df_1.index("效率")
suo_yin_3 = df_1.index("成绩")
suo_yin_4 = df_1.index("产量")
suo_yin_5 = df_1.index("节点")
suo_yin_6 = df_1.index("备注")
# 读取文件内容 usecols=[1, 3, 4] 读取第1,3,4列
df = pd.read_excel(file_name, usecols=[suo_yin_1, suo_yin_2, suo_yin_3, suo_yin_4, suo_yin_5, suo_yin_6], sheet_name='data')
# pf = pd.read_excel('xxx.xls', usecols=[1, 3, 4], sheet_name='data')
# print(pf)
# 追加一列数据,将每个文件的名字追加进该文件的数据中,确定每条数据属于哪个文件
excel_name = file.replace(".xlsx", "") # 提取每个excel文件的名称,去掉.xlsx后缀
df["文件名"] = excel_name # 新建列名为“文件名”,列数据为excel文件名
dfs.append(df) # 将新建文件名列追加进汇总excel中
# 行合并
df_concated = pd.concat(dfs)
# 构造输出目录的绝对路径
out_path = os.path.join(dir, 'res.xlsx')
# 输出到excel表格中,并删除pandas默认的index列
df_concated.to_excel(out_path, sheet_name='Sheet1', index=None)
# 调用并执行函数
to_one_excel(r'E:\py\python3.7\test\test96')
来源:https://blog.csdn.net/qq_45365214/article/details/123729128


猜你喜欢
- asp分页做为一个经典的asp问题,有着非常丰富的分页形式和分页方法,但是大多数的asp分页都是使用VBscript作为服务器端的脚本,本文
- 本文介绍了linux下如何备份与恢复mysql数据库。数据库备份是非常重要的。如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次
- 下载,安装先检查系统中是否有mysql ,MariaDB,如有,先卸载rpm -qa | grep mysqlrpm -qa | grep
- Python 中有很多很实用的语法糖,这些语法糖可以帮助我们简化代码、更易理解等优点,接下里再看一个 Python3 * 别实用的语法序列解
- 设置密码保护SqlServer数据库备份文件! 备份SqlServer数据库 Backup Database [数据库] To disk=&
- MySQL 触发器MySQL 数据库中触发器是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不需要使用
- http_request2.py用于发起http请求#读取多条测试用例#1、导入requests模块import requests#从 cl
- Python 实现微信小程序的用户登录小程序可以通过官方提供的登录邓丽来获取用户身份的标示, 具体文档可以参考 官方文档, 通过流程时序可以
- scratch-blocks编译的时候会出现的问题:scratch-gui依赖的scratch-blocks模块在安装的时候编译会报错。原因
- 报错代码粉丝群里面的一个小伙伴想用requests爬虫,然后遍历Xpath定位的数据列表的时候,发生了报错(当时他心里瞬间凉了一大截,跑来找
- 在使用柱状图时,经常遇到需要多组数据进行比较的情况。绘制单个数据系列的柱形图比较简单,多组数据柱状图绘制的关键有三点:多次调用bar()函数
- 本文将结合实例代码,介绍 OpenCV 如何查找轮廓、获取边界框。代码: contours.pyOpenCV 提供了 findContour
- 1.算法:对于一组关键字{K1,K2,…,Kn}, 首先从K1,K2,…,Kn中选择最小值,假如它是 Kz,则将Kz与 K1对换;然后从K2
- 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往
- jQuery.post( url, [data], [callback], [type]
- 深度学习中,模型训练一般都需要很长的时间,由于很多原因,导致模型中断训练,下面介绍继续断点训练的方法。方法一:载入模型时,不必指定迭代次数,
- 有一个多选的需求,在网上找到了这个插件:multiselect https://github.com/ehynds/jquery-ui-mu
- 整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,0的阶乘为1。即:n!=1×2×3×...×n。首先导入math模块
- 本文实例讲述了PHP实现的简单排列组合算法应用。分享给大家供大家参考,具体如下:一、问题:给你一个40斤的西瓜,给3个人分,有多少种分法?二
- 写在前面最近写周赛题, 逃不开的一种题型是设计数据结构, 也就是第三题, 做这种题需要的就是对语言中的容器以及常用排序查找算法的掌握, 而我