当前位置:   article > 正文

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

pandas读取文件夹所有excel文件

遍历读取代码

前几天收到一个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])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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)
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/209592
推荐阅读
相关标签
  

闽ICP备14008679号