前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >盘点一个Python自动化办公实战案例(一)

盘点一个Python自动化办公实战案例(一)

作者头像
Python进阶者
发布2023-12-26 16:22:31
1370
发布2023-12-26 16:22:31
举报

冰壶含雪魄,银汉漾清波。

大家好,我是皮皮。

一、前言

前几天在Python最强王者交流群【钟爱一生】问了一个Python自动化办公的问题,一起来看看吧。问题描述:

各位好:目前我遇到这样一个问题(如图):如果入库包含一工厂、二工厂和三工厂半成品同时出库也包含一工厂、二工厂和三工厂半成品且物料代码一致的话,入库改成含IONP中的入库信息,由于新学python对这个不太熟悉,代码不知从那下手,所以没写代码。

当然了,因为他的需求最开始没有表述清楚,导致群里大佬们一顿狂猜,最后才将真正的需求确认。这里再次请求大家,务必要把自己的提问问题表达清楚,要不然没人知道你要表达什么,浪费彼此的时间。

遇到表达不清的,能稍微描述下,想要达成的结果吗?在excel上,或者画图也行。最好是把你想要的结果展示在excel中,另外,你展示的这个表格最好做个小的demo发上来,不要让大佬们再手动创建原始数据。实在不行,你就自己录制视频,或者发语音在群里提问都可以。

最后粉丝提供了一版数据,给了一份demo。

二、实现过程

最开始大家用Excel进行操作,确实也能实现,但是其中的逻辑并不是很清晰,所以也是无从下手。

关于业务逻辑这块,提问者自己没说清楚,大佬们也被折磨的非常痛苦,盲猜中。

最后被【东哥】确认为如下:第一步:针对Excel表格,以【物料代码】进行分组 第二步:筛选【入库】列包含一工厂半成品或者二工厂半成品或者三工厂半成品,且每行对应的【出库】包含一工厂半成品或者二工厂半成品或者三工厂半成品的数据行 第三步:将第二步中的筛选行中的【入库】内容,替换为第一步每个分组的第一行(含IONP)中的【入库】的内容 这么表述应该无误了。

虽然粉丝反馈说是对的,转眼间又被打脸否认,事实上,还是有误的,继续抓狂中。。。

然后粉丝继续给予了肯定,说这么理解无误。

目标:把二工厂半成品替换成一工厂,三工厂半成品替换成三工厂生产。

本来以为以上的猜测已经足够明确了,可是还是存在歧义之处。

需求明确了,接下来就是代码攻克了,下一篇文章我们一起来看看具体实现。这里【小小明】大佬给了一份代码,如下图所示:

有没有理解错误不清楚,只能保证当前数据情况下,结果正确。

关于后面的那几行代码解释如下:

这段代码主要做了以下几件事情:首先,t2.reset_index()将t2这个DataFrame的索引重置为默认的整数索引。然后,merge(t1, left_on="入库", right_on="出库", suffixes=("", "_y"))将t1和t2两个DataFrame根据"入库"和"出库"两列进行合并,合并方式是左连接(left join)。在合并过程中,如果两个DataFrame中有相同的列名,那么在结果中,这两个列的值会被分别命名为原列名和后缀"_y"。最后,for row in t.itertuples():遍历合并后的DataFrame t的每一行,然后使用df.loc[row.index, "入库"] = row.入库_y将每一行的"入库_y"值赋给df中对应行的"入库"列。

但是这个问题还没有结束,反而还在持续发酵中,下一篇文章,我们继续来看!

三、总结

大家好,我是皮皮。这篇文章主要盘点了一个Python自动化办公的问题,文中针对该问题,给出了具体的解析和代码实现,帮助粉丝顺利解决了问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫与数据挖掘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、实现过程
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档