回復“書籍”即可獲贈Python從入門到進階共10本電子書
(資料圖)
今
日
雞
湯
低眉信手續續彈,說盡心中無限事。大家好,我是皮皮。
一、前言前幾天在Python最強王者群【莫生氣】問了一個Python自動化辦公的問題,這里拿出來給大家分享下。
他的原始數據中,如下圖所示,這里脫敏后的處理:
原來粉絲的做法是,針對不同的合同號,屬于不同的產品,他自己單獨從excel中進行篩選數據,比方說合同1為一個單獨的表格,合同2又為一個單獨的表格,合同3為一個單獨的表格,然后再針對3個不同的表格進行單獨操作。
上面這個做法確實是可以行得通,但是篩選的話就比較費時間,也費精力,萬一出錯了,比方說少復制一行啥的,還容易出現混亂。
二、實現過程其實這里可以在處理的時候,增加一個判斷,如果是合同1的話,就單獨為合同1寫個處理函數,同理,如果是合同2的話,就單獨為合同2寫個處理函數,以此類推。畢竟每個合同代表不同的產品,每個產品的模板處理還有部分差異。
然后公共部分的話,還是可以復用的,以前3個程序需要分別進步跑程序,現在整合到一個代碼文件里邊,提升了效率。
if?__name__?==?"__main__":????df?=?pd.read_excel("測試數據.xlsx",?sheet_name="Sheet1",?usecols="B,E,F,M,Q,R,U,V,X,AC,AN:AR")????df.columns?=?[c.strip()?for?c?in?df.columns]????for?(b,?e,?m,?f),?df_split?in?df.groupby(["合同號",?"商品編號",?"收貨單位",?"城市名"]):????????m?=?m.strip("*")????????#?注意這里會過濾掉特殊省位????????if?any(addr?in?f?for?addr?in?("廣東",?"安徽",?"浙江",?"福建",?"貴州")):????????????continue????????if?b.startswith("合同1"):????????????title?=?"合同1"????????????hetong1(title,?e)????????elif?b.startswith("合同2"):????????????title?=?"合同2"????????????hetong2(title,?e)????????elif?b.startswith("合同3"):????????????title?=?"合同3"????????????hetong3(title,?e)????????else:????????????print(f"該訂單{b}屬于其他產品!")
程序改進之后,順利地幫粉絲解決了問題,還提升了處理問題的效率,粉絲直呼好家伙!
三、總結大家好,我是皮皮。這篇文章主要盤點了一個Python自動化辦公的問題,文中針對該問題,給出了具體的解析和代碼實現,幫助粉絲順利解決了問題。
最后感謝粉絲【莫生氣】提問,感謝【Python進階者】給出的思路和代碼解析,感謝【馮誠】等人參與學習交流。
【提問補充】溫馨提示,大家在群里提問的時候。可以注意下面幾點:如果涉及到大文件數據,可以數據脫敏后,發點demo數據來(小文件的意思),然后貼點代碼(可以復制的那種),記得發報錯截圖(截全)。代碼不多的話,直接發代碼文字即可,代碼超過50行這樣的話,發個.py文件就行。
大家在學習過程中如果有遇到問題,歡迎隨時聯系我解決(我的微信:pdcfighting1),應粉絲要求,我創建了一些高質量的Python付費學習交流群和付費接單群,歡迎大家加入我的Python學習交流群和接單群!
小伙伴們,快快用實踐一下吧!如果在學習過程中,有遇到任何問題,歡迎加我好友,我拉你進Python學習交流群共同探討學習。
-------------------?End?-------------------
往期精彩文章推薦:
if a and b and c and d:這種代碼有優雅的寫法嗎?
Pycharm和Python到底啥關系?
都說chatGPT編程怎么怎么厲害,今天試了一下,有個靜態網頁,chatGPT居然沒搞定?
站不住就準備加倉,這個pandas語句該咋寫?
歡迎大家點贊,留言,轉發,轉載,感謝大家的相伴與支持
想加入Python學習群請在后臺回復【入群】
萬水千山總是情,點個【在看】行不行
/今日留言主題/
隨便說一兩句吧~~
關鍵詞: