拆分和合并EXCEL是在工作中经常涉及的操作,比如按部门将文件拆分用以后续发送;将每月数据汇总成一个汇总表会涉及以下几方面内容:Dataframe筛选: dfs[dfs[列名称]==’查找字段’]遍历文件夹中EXCEL: pathlib.Path.glob(‘*.xlsx’)。
Path(file).stem: 返回文件名主要参考的相关网站有以下:https://zhuanlan.zhihu.com/p/475661402?utm_id=0其他说明:本篇介绍的无论是拆分还是合并操作,没有考虑EXCEL格式
拆分EXCEL拆分EXCEL相对比较简单,指定需要拆分的字段,循环并输出至文件即可.下面是按省市(=province)拆分的例子:拆分前的汇总文件
拆分后的文件
Python代码import os from pathlib import Path import pandas as pd # ----------------------------读取文件------------------------------
path=rC:\Users\02279074\OneDrive - Elanco\Lilly_OneDrive\C\TZ\写作文档 sourceFile=os.path.join(path,全国行政区域.xlsx
) #原文件地址 dfs=pd.read_excel(sourceFile, #读取EXCEL原文件 sheet_name=Sheet1, #表格名称 header=
0, #首行为column converters={id:str},) #指定code为文本# ----------------------------处理数据------------------------------
splitKEYs=dfs[province].unique() #指定需要拆分的关键字段for item in splitKEYs: #循环字段 df=dfs[dfs[province]==item]
#筛选中相关数据 fileName=os.path.join(path,拆分EXCEL,f{item}-nonFormat.xlsx) #新文件名 df.to_excel(fileName,index=
False) #输出到EXCEL并保存 print(split done)合并EXCEL合并EXCEL相对拆分要复杂一些,对于EXCEL文件有一些限制:合并的EXCEL文件最好有相同格式合并的数据在文件中有相同sheet名称
合并文件在同一目录中汇总前文件
汇总后
python代码import os from pathlib import Path import pandas as pd # ----------------------------文件信息------------------------------
path=rC:\Users\02279074\OneDrive - Elanco\Lilly_OneDrive\C\TZ\写作文档 outputFile=os.path.join(path,合并EXCEL
,合并-基本.xlsx) #输出文件地址 filePath=os.path.join(path,拆分EXCEL) #文件地址 files=Path(path).glob(*.xlsx) #所有xlsx文件列表
# ----------------------------处理数据------------------------------ data=[] #用以存储所有df数据for file in files:
#循环所有xlsx df=pd.read_excel(file,header=0, #读入df sheet_name=Sheet1) #指定文件名 data.append(df)
#存入变量 dfs=pd.concat(data) #合并成df dfs.to_excel(outputFile,index=False) #输出到EXCEL并保存 print(merge done)上面代码可以将文件合并,但有时我们需要将读入的EXCEL名称显示在合并文件中。
可以想像你有1-12个月的表格,合并完成后想知道数据是哪个月份的,这时有文件名称就非常的有帮助。汇总前文件
汇总后:可以看到文件名称已经被加入到合并后的文件中
python代码import os from pathlib import Path import pandas as pd # ----------------------------文件信息------------------------------
path=rC:\Users\02279074\OneDrive - Elanco\Lilly_OneDrive\C\TZ\写作文档 outputFile=os.path.join(path,合并EXCEL
,合并-添加文件名.xlsx) #输出文件地址 filePath=os.path.join(path,1-12数据) #文件地址 files=Path(filePath).glob(*.xlsx) #所有xlsx文件列表
# ----------------------------处理数据------------------------------ data=[] #用以存储所有df数据 dfSize=[] #debug
for file in files: #循环所有xlsx df=pd.read_excel(file,header=0, #读入df sheet_name=Sheet1) #指定文件名 fileName=file.stem
#获取文件名称 df[file_name]=fileName #添加新列 data.append(df) #存入变量 dfSize.append(len(df)) #debug记录df长度
dfs=pd.concat(data) #合并成df dfs.to_excel(outputFile,index=False) #输出到EXCEL并保存 print(merge done)通过记录df的长度和汇总后dfs的长度,可以看到记录都已经汇总完成
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。