Python办公自动化(七)|自动更新不对称表格
需求分析
现在我们有类似如下一份记录了口袋妖怪名字的分组名单:(未全部展示,实际有A-U组+1个"未分组")
现在有一份更新的名单(仅含名字)
需要根据这份新名单对原来的总表进行更新,即对新名单中的名字按照总表的分组进行更新,剔除不在新名单中的名字,并将新名单中新出现的名字划分到“未分组”中,如上图中的“早小起”
这位读者的需求是一个需要长期重复的任务,每隔一段时间就会拿到一个新名单,需要对总名单进行调整。如果用Excel操作,可能需要反复查找新名单的名字在哪个分组,如果不存在则手动添加到“未分组”,存在则做标记。最后把未做标记的名字删除再删除空隙即可,整个过程十分繁琐,而且若总名单有千万个名字则工作量非常大。因此该工作很适合用Python辅助自动化
Python实现
第一步是导入需要的库并把路径设置好,我还是习惯用函数定位到桌面上利于复用
import os
import pandas as pd
import numpy as npdef GetDesktopPath():return os.path.join(os.path.expanduser("~"), 'Desktop')path = GetDesktopPath() + '\\data\\'
接着读取两份文件
df1 = pd.read_excel(path + '总名单.xlsx',encoding = 'utf-8',sheet_name = 0,skiprows=1)
df2 = df1.iloc[:,1:23]df3 = pd.read_excel(path + '新名单.xlsx',encoding = 'utf-8',sheet_name = 0)
接下来是根据新名单中出现的名字找各自在总表中的分组,思路是用np.where,如下所示
np.where(df2 == '死神板')
# (array([7], dtype=int64), array([5], dtype=int64))
返回元组,行列信息都在里面,那么用如下命令即可获得口袋妖怪“死神板”所在的分组
col = np.where(df2 == '死神板')[1][0]
df2.columns[col]
# 'F组'
有了个思路就可以写个函数,并用apply逐个运用到新名单里的名字上
这里要注意,新名单中的名字在总名单中可能没有,因此需要判断后再取最里面一层数字,否则会出错
def find(x):results = np.where(df2 == x)[1]try: return df2.columns[results[0]]except:return '未分组'df3['备注'] = df3['最新名单'].apply(find)
results_lst = []
for index,i in enumerate(df2.columns):results = df3.iloc[np.where(df3['备注']==i)[0].tolist(),0]# 重置索引很重要,为什么重要往下看results = results.reset_index(drop=True)results_lst.append(results)
results_lst
可以看到,结果是一个Series列表,这不正好是pd.concat的对象嘛,由于接下来要横向合并,因此每个Series需要重置索引保证都是从0开始
df_final = pd.concat(results_lst,axis=1)
# 记得把列名还原
df_final.columns = df2.columns
df_final.to_excel(f'{path}整理后表格.xlsx',encoding='gbk', # 编码不一定是gbkindex=False,header=True)
参考链接 :
Python办公自动化(七)|自动更新不对称表格 : https://mp.weixin.qq.com/s/3Gc1z7QhLULpYentl-o0Hw
Python办公自动化(七)|自动更新不对称表格相关推荐
- Python办公自动化,自动更新表格,告别繁琐!
大家好,又到了Python办公自动化专题 . 今天我们讲解的案例是如何使用Python自动更新Excel表格,简单来说就 是 每天都会对Excel中多个sheet进行更新,需要操作完后可以用程序完成第 ...
- 利用python和Tushare自动更新A股每日数据
利用python和Tushare自动更新A股每日数据 tushare ID :423004 所需接口 整体思路为: 1.利用stock_basic获取ts_code,获得沪深全部上市公司股票代码 2. ...
- gdb -iex_如何使用IEX Cloud,Matplotlib和AWS在Python中创建自动更新数据可视化
gdb -iex Python is an excellent programming language for creating data visualizations. Python是用于创建数据 ...
- python+pyinstaller+OOS自动更新(2) 文件遍历创建filehash.txt
python+pyinstaller+OOS自动更新2 文件遍历创建filehash.txt 遍历文件 获取文件的md5 /tool_getFilehash.py的所有代码 这时就可以打包tool_g ...
- python自动更新excel_Python办公自动化|自动更新表格,告别繁琐
大家好,又到了Python办公自动化专题.今天我们讲解的案例是如何使用Python自动更新Excel表格,简单来说就是每天都会对Excel中多个sheet进行更新,需要操作完后可以用程序完成第一张sh ...
- easyui数据表格重置_Python办公自动化,自动更新表格,告别繁琐
大家好,又到了Python办公自动化专题 . 今天我们讲解的案例是如何使用Python自动更新Excel表格,简单来说就 是 每天都会对Excel中多个sheet进行更新,需要操作完后可以用程序完成第 ...
- 【已解决】Word转换PDF时自动更新域导致图片表格的引用编号全部乱掉
问题背景 最近在排版毕业设计,因为有很多图片和表格,为了省事,直接在文中引用图片,表格,就不用编号了,(这个时候文章的一级标题是'第1章'),但是学校要求一级标题的格式为"第一章" ...
- python 合并excel 自动更新_手把手教你4种方法用Python批量实现多Excel多Sheet合并
一.前言 大家好,我是崔艳飞.前两天给大家分享了Python自动化文章:手把手教你利用Python轻松拆分Excel为多个CSV文件,而后在Python进阶交流群里边有读者遇到一个问题,他有很多个Ex ...
- Python之Bilibili自动更新邮件提醒并任务栏图标「完整代码」
前言 本次分享的是小编经过多日编写的关于自动检测B站Up主视频更新情况,并发送邮件提醒更新的Python程序,代码不专业.部分代码段借鉴网上,仅供参考娱乐! 用到的库 selenium. _threa ...
最新文章
- 在OpenCV下写的直方图匹配(直方图规定化)C++源码!
- 几何视角看线性方程组解的情况
- 陆金所 CAT 优化实践
- 源码读不会,小白两行泪!
- Electron中通过globalShortcut实现监听键盘事件进而实现快捷键功能
- ORACLE TEXT DATASTORE PREFERENCE(四)
- python tkinter详解 博客园_python tkinter-布局
- java ReentrantLock 锁相关笔记
- 情怀真的可以吃~致文青
- Convert Windows 32bit dirver to Windows 64bit
- Golang——文件创建和写入、OpenFile追加写入、Open读取文件、ReadBytes缓冲区读取、os.Args、flag
- Python 崛起、JavaScript 制霸 —— GitHub 2017 年度开源报告里的语言之争
- 第一步_安装VMware虚拟机和搭载ubuntu系统
- python第五十二课--自定义异常类
- 移动通信(Mobile Communication)
- U盘无法格式化的原因及解决方法
- Python - global 跨函数参数传递
- 虚拟 DOM 是什么? 有什么优缺点?
- trove mysql 镜像_trove 基于 centos7 制作 mysql5.5 镜像
- win10右键卡顿原因_win10系统点击鼠标右键出现卡顿的解决方法
热门文章
- python修改散点图中点的颜色_如何在seaborn散点图中更改点边颜色?
- xmarin.android导航栏,Xamarin.Forms中心标题和透明导航栏 - Android
- 太赫兹芯片是什么原理_太赫兹微芯片速度可提升100倍 却遭遇研发两大挑战
- 2013年美国国情咨文总结
- Kubernetes之持久化存储
- springboot项目执行controller方法时进入慢的问题
- 模块化配电系统在高密度数据中心的应用
- CLOSE_WAIT状态的原因与解决方法(2)
- vc++6.0工具栏自绘按钮程序
- UnboundLocalError: local vaiable 'XX' reference...