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

Python进阶者
• 阅读 290

大家好,我是皮皮。

一、前言

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

【温馨提示】

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

言归正传,一起来看看。上一篇文章中发生了一个小插曲,不过问题不大,结果总归是好的,玩归玩,闹归闹,别拿学习开玩笑。

二、实现过程

这里【小小明】大佬发问:对于昨天这个问题,我希望征求一下大家的意见,就是如果我们希望消除所有循环,对于下面的写法是否具有更简化的方案。

这里有个小插曲,昨天的时候【吴超建】偶然间问到明佬的这个代码中,是否可以消除for循环,然后这里就有了如上提问。

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

代码如下:

import pandas as pd

df = pd.read_excel("替换.xlsx")
ionp = df[df.编号.str.startswith("IONP")]
rule = "[一二三]工厂半成品"
chg = df[df.入库.str.fullmatch(rule) & df.出库.str.fullmatch(rule)]
t = chg.reset_index(names="idx").merge(ionp, left_on=["物料代码", "入库"], right_on=[
    "物料代码", "出库"], suffixes=("", "_y"))
df.loc[t.idx, "入库"] = t.入库_y.values
df

merge确实会导致索引丢失,所以只能通过重置索引来保留原有位置。

后来针对该问题,【隔壁😼山楂】也给出了自己的看法:我自认为更简化的方案就是直接查找,两两匹配对应替换,下方代码在我之前代码中修改了部分。

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

代码如下:

import pandas as pd

df = pd.read_excel('替换.xlsx')
# 1、找到【入库】和【出库】都包合一工厂、二工厂、三工厂半成品的记录
compile = r'[一二三]工厂半成品'
query_code = df.loc[df['入库'].str.fullmatch(compile) & df['出库'].str.fullmatch(compile), ['物料代码', '入库']]
# 2、根据上一查找结果的物料代码,找到当前需要替换的入库信息等于IONP出库信息的记录
ionp = df.loc[(df['物料代码'] + df['出库']).isin(query_code.agg(''.join, axis=1)) & df['编号'].str.startswith('IONP')].set_index('物料代码')['入库']
# 3、替换,将需要替换的记录变更为IONP的入库信息
df.loc[query_code.index, '入库'] = query_code['物料代码'].replace(ionp)
df

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

两位大佬隔空论道,读者们受益颇丰。这里也顺便回答了另外一个粉丝的小提问。

【小小明】:拼合确实可以,但是merge的代码是否有办法继续简化吗?

【隔壁😼山楂】:这个merge已经是一行了,目前我没有特别好的方法,能想到的就是换种思路,因为在这里就是需要跟踪到被替换的位置。由于merge会重置索引,而目前这些做法中就是确保索引在每一步变换过程中不会发生变化,所以使用merge时若担心索引重置就需要自行先重置下,保证在merge前后需要替换的索引没有变化。

【小小明】:那看来merge已经没有优化空间了,参考你的拼合法,又写了一下:

import pandas as pd

df = pd.read_excel("替换.xlsx")
ionp = df.loc[df.编号.str.startswith("IONP"), ['物料代码', '入库', '出库']]
ionp = ionp.set_index(ionp.物料代码 + ionp.出库).入库
rule = "[一二三]工厂半成品"
chg = df.loc[df.入库.str.fullmatch(
    rule) & df.出库.str.fullmatch(rule), ['物料代码', '入库']].agg(''.join, axis=1)
df.loc[chg.index, "入库"] = chg.replace(ionp)
df

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

守得云开见月明。

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

至此,粉丝【钟爱一生】提出的问题告一段落,真是一段艰辛的答疑。

三、总结

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

最后感谢粉丝【钟爱一生】提出的问题,感谢【瑜亮老师】、【隔壁😼山楂】、【小小明】、【黑科技·鼓包】、【猫药师Kelly】、【东哥】给出的思路,感谢【莫生气】、【冯诚】等人参与学习交流。

【提问补充】温馨提示,大家在群里提问的时候。可以注意下面几点:如果涉及到大文件数据,可以数据脱敏后,发点demo数据来(小文件的意思),然后贴点代码(可以复制的那种),记得发报错截图(截全)。代码不多的话,直接发代码文字即可,代码超过50行这样的话,发个.py文件就行。

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

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
1年前
使用Python统计下桌面某个文件夹下(含多层子文件夹)具体文件的数量(方法一)
大家好,我是皮皮。一、前言前几天在Python最强王者群【东哥】问了一个Python自动化办公的问题,一起来看看吧。这个是他自己在实际工作中遇到的需求,正好遇到了这个问题,想着用Python来实现下。二、实现过程这里【郑煜哲·Xiaopang】给了一个提示
Python进阶者 Python进阶者
1年前
使用Python统计下桌面某个文件夹下(含多层子文件夹)具体文件的数量(方法二)
大家好,我是皮皮。一、前言前几天在Python最强王者群【东哥】问了一个Python自动化办公的问题,一起来看看吧。这个是他自己在实际工作中遇到的需求,正好遇到了这个问题,想着用Python来实现下。二、实现过程上一篇文章中已经分享了一个方法,这一篇文章继
Python进阶者 Python进阶者
1年前
操作excel的xlwt库难道没有删除sheet 的方法吗?
大家好,我是皮皮。一、前言前几天在Python最强王者群【小马哥】问了一个Python自动化办公处理的问题,一起来看看吧。各位大神,操作excel的xlwt,这个添加sheet的时候可以用addsheet方法,xlwt难道没有删除sheet的方法吗?没有找
Python进阶者 Python进阶者
1年前
盘点一个Python自动化办公的问题——批量实现文件重命名(方法一)
大家好,我是皮皮。一、前言前几天在Python最强王者群【维哥】问了一个Python自动化办公处理的问题,一起来看看吧。大佬们,请教一个Python自动化办公的问题,我有一个名为data的文件夹,下面有这4个Excel文件。然后还有一个原始数据.xlsx表
Python进阶者 Python进阶者
1年前
盘点一个Python自动化办公的问题——批量实现文件重命名(方法二)
大家好,我是皮皮。一、前言前几天在Python最强王者群【维哥】问了一个Python自动化办公处理的问题,一起来看看吧。大佬们,请教一个Python自动化办公的问题,我有一个名为data的文件夹,下面有这4个Excel文件。然后还有一个原始数据.xlsx表
Python进阶者 Python进阶者
1年前
pandas读取一个文件夹下所有excel表格中的第三个sheet,怎么破?
大家好,我是皮皮。一、前言前几天在Python最强王者交流群【wen】问了一个Python自动化办公的问题,一起来看看吧。请教,pandas读取一个文件夹下所有excel表格中的第三个sheet,但是不同的excel的第三个sheetname也不同,怎么设
Python进阶者 Python进阶者
1年前
盘点一个Python自动化办公的实战问题
大家好,我是皮皮。一、前言前几天在Python白银交流群【东哥】问了一个Python自动化办公的问题,一起来看看吧。问题描述:大佬们,这个Excel表格中,针对C列到N列,我想要取每一行的数字,最后输出一句话,如针对第二行数据的话最后生成:该订单对应7个J
Python进阶者 Python进阶者
12个月前
盘点一个Python自动化办公实战案例(二)
大家好,我是皮皮。一、前言前几天在Python最强王者交流群【钟爱一生】问了一个Python自动化办公的问题,一起来看看吧。【温馨提示】遇到表达不清的,能稍微描述下,想要达成的结果吗?在excel上,或者画图也行。最好是把你想要的结果展示在excel中,另
Python进阶者 Python进阶者
11个月前
盘点一个Python自动化办公实战案例(三)
大家好,我是皮皮。一、前言前几天在Python最强王者交流群【钟爱一生】问了一个Python自动化办公的问题,一起来看看吧。【温馨提示】遇到表达不清的,能稍微描述下,想要达成的结果吗?在excel上,或者画图也行。最好是把你想要的结果展示在excel中,另
Python进阶者 Python进阶者
5个月前
请问如何将带有斜纹水印pdf的转成Excel呢?
大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【wen】问了一个Python自动化办公的问题,问题如下:请问如何将带有斜纹水印pdf的转成Excel呢?目前我把pdf转成图片,根据水印的颜色进行清除,但是在脱网环境下无法将图片转