Python pandas遍历读取文件夹、子文件下所有的excel文件

25 篇文章 11 订阅

遍历读取代码

前几天收到一个excel拼接预处理的工作,一开始想着拼接能有多难,结果拿到源文件是真崩溃。一个大文件夹杂七杂八揣着若干个小文件夹,excel文件散落各处,而且各个excel文件sheet页的个数和名称也乱七八糟,没有任何规律可循。各个excel表格上充斥着各种人工痕迹,东一榔头西一棒子就是一个先前业务人员插的透视表。总之,是一个非常脏的数据集。
那就暴力遍历法,挨个读吧,先把数据读出来,后续清洗的问题也注定是灾难。
所以接下来的这段代码实现的效果是:读取一个包含子文件夹的大文件夹下的所有excel文件,并且读取excel的所有sheet页上的数据。

import pandas as pd
import os
dfs=pd.DataFrame()
#os.walk(file_path) 深度遍历file_path下的所有子文件夹及文件
for root_dir,sub_dir,files in os.walk(r"E:\202009\源数据"):
    for file in files:
        if file.endswith(".xlsx"):
            #构造绝对路径
            file_name = os.path.join(root_dir, file)
            #读取sheet页
            #pd.read_excel(file_path,sheet_name=None).keys()获取excel表格所有的sheet页名称
            for sheet in  pd.read_excel(file_name,sheet_name=None).keys():
                df=pd.read_excel(file_name,sheet_name=sheet)
                excel_name=file.replace(".xlsx","")
                #新增两列用于记录数据所属excel及sheet页,这一步骤感觉很有用,因为后续数据清理的时候,遇到莫名其妙的数据不知道怎么办的话,还可以去源excel表格上看下。
                df["excel_name"]=excel_name
                df["sheet_name"]=sheet
                dfs=pd.concat([dfs,df])

os.walk()文件目录遍历器

语法:os.walk(top),top为需要遍历的目录地址,返回一个三元组(root,dirs,files)。
1)root 所指的是当前正在遍历的这个文件夹的本身的地址
2)dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
3)files 同样是 list , 内容是该文件夹中所有的文件名称(不包括子目录)

其中我们实际运用中最常用到的返回值是files.

#打印出一个目录下所有的末级文件名称
for root,dirs,files in os.walk(r"C:\Users\Desktop\2020.9-12"):
    print(files)
  • 24
    点赞
  • 178
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值