Python pandas遍历读取文件夹、子文件下所有的excel文件
目录遍历读取代码os.walk()文件目录遍历器遍历读取代码前几天收到一个excel拼接预处理的工作,一开始想着拼接能有多难,结果拿到源文件是真崩溃。一个大文件夹杂七杂八揣着若干个小文件夹,excel文件散落各处,而且各个excel文件sheet页的个数和名称也乱七八糟,没有任何规律可循。各个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])
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)
更多推荐
已为社区贡献8条内容
所有评论(0)