9102年冬季的一天,身为一个新人,总是迫不及待地希望能够快速融入一个新集体,尽快体现价值,然而幸福总是来得这么突然。
10:00 AM
Boss:“溉汶啊,帮我做个需求统计。我一会儿把各业务部门的需求列表发给你,你给粘在一个Sheet里就行。”
Gavin:“好嘞!老大啥时候要?”
Boss:“下午周会上,我要跟那帮业务拍优先级。14:00 PM吧。”
Gavin: “收到。”
10:05 AM
打开新公司给配的二手Thinkpad,刚做完的系统,感觉就像回到了新手村,啥也木有,这咋开工啊?俗话说的好:工欲善其事必先利其器。咱得先把大杀器Anaconda配上。
具体咋配置呢?
- 官网下载地址 https://www.anaconda.com/distribution/#download-section;
- 根据自己的系统,切换不同的页面,下载相应的安装文件,并安装;
- 安装过程也比较简单,选择安装位置,然后就是不停的下一步,直到完成;
11:00 AM
热心大哥Max:“小汶啊,到饭点儿了,走吧,哥带你去食堂认认门。组里的人都出差了,这两天咱哥俩食堂凑合凑合,等他们回来了,咱再给你弄顿大的,欢迎一下!”
Gavin:“得嘞,听您安排!”
12:05 PM
一看邮箱,终于开始陆陆续续收到Boss转发的邮件,邮件的附件里是一个个Excel文档,每个部门也都只管自己的那部分需求,要是能接龙发过来,我也省了合并的功夫了。好在Anaconda也安装完了,开工吧!
- 先把附件都下载到文件夹里;
- 打开开始,找到Anaconda Prompt,双击即可;
- 输入 "jupyter lab",然后 Enter;
- 在默认浏览器的新Tab页中,你会看到一个很实用的界面:
- 没时间研究了,按左上角的 "+",选择 Notebook下的Python 3文档;
- OK,终于开始编写Python文档了!
12:07 PM
我们要干什么来着?哦对了,要合并所有附件里的Excel文档到同一个Sheet。先画个流程图吧,之后再写Python,这样思路比较清晰。
- 打开文件夹,获得文件列表;
- 读取Excel文件A到df_a,并添加到一个List当中;
- 重复3,直到所有文档都合并到df;
- 将List当中的文档合并到df;
- 将df保存到目标文件夹;
12:15 PM
流程差不多就是这个样了,开始码代码。
Step1. 在第一个Cell里,读出文件夹里的所有文件名称:
#!/usr/bin/python# -*- coding: UTF-8 -*-import os, sys# 打开文件path = "F:jupyterlabChapter1-attachment"dirs = os.listdir( path )# 输出所有文件和文件夹for file in dirs: print(file)
点击黑色运行三角,之后会展示如下:
A.xlsx
B.xlsx
C.xlsx
D.xlsx
E.xlsx
Step2. 在第二个Cell里,完成合并的操作+保存新文档的操作:
import pandas as pd#创建一个Listlistdf=[]#循环操作读取文档到矩阵并塞进Listfor filename in dirs: #读取文档的绝对地址 filepath = "F:jupyterlabChapter1-attachment"+filename #将表格读取到矩阵中 df_a = pd.read_excel(filepath) #将矩阵塞进List listdf.append(df_a)#将List中的矩阵合并df = pd.concat(listdf)#打印合并后的矩阵print(df)#将df写入到名为result.xlsx的文档中writer = pd.ExcelWriter(path+"esult.xlsx")df.to_excel(writer,'Sheet1',index=False)writer.save()
运行一下:
A.xlsx
B.xlsx
C.xlsx
D.xlsx
E.xlsx
No. Requirement Priority PIC
0 1 Dig a hole 0 Gavin
0 1 Jump into the hole 0 Gavin
0 1 Cover the hole with Soil 0 Gavin
0 1 Water the position 0 Gavin
0 1 Go home 0 Gavin
Step3. 检查下效果
- 先运行下Step1,得到结果:A.xlsx
B.xlsx
C.xlsx
D.xlsx
E.xlsx
result.xlsx - 在第三个Cell里,我们可以直接查看 result.xlsx的文档内容:
#拼接目标文件的绝对路径filepath = "F:jupyterlabChapter1-attachmentesult.xlsx"#将表格读取到矩阵中df_result = pd.read_excel(filepath)#打印表格内容print(df_result)
运行一下:
No. Requirement Priority PIC
0 1 Dig a hole 0 Gavin
1 1 Jump into the hole 0 Gavin
2 1 Cover the hole with Soil 0 Gavin
3 1 Water the position 0 Gavin
4 1 Go home 0 Gavin
12:30 PM
又打开excel文档看了下,发现No.那一列都是1,感觉不大好啊,再改改? 其实不改也行......哈哈!
在第四个Cell里,我们修改一下:欢迎关注公众号"溉汶Python实践派",回复"修改列号"获取代码!
No. Requirement Priority PIC
0 1 Dig a hole 0 Gavin
0 2 Jump into the hole 0 Gavin
0 3 Cover the hole with Soil 0 Gavin
0 4 Water the position 0 Gavin
0 5 Go home 0 Gavin
12:35 PM
没什么问题,直接发送给了Boss。转念一想,这个活儿保不齐以后就是我的了,代码整理一下,以后一键运行,点那么多步太烦人啦!
感谢各位小伙伴能看到最后,希望对你的日常工作能有所帮助~