日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自动化办公--通过BOM表输出原材料状态(第一版)

發(fā)布時(shí)間:2023/12/16 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自动化办公--通过BOM表输出原材料状态(第一版) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

提示:通過文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔

文章目錄

  • 前言
  • 一、現(xiàn)有的數(shù)據(jù)有哪些?
  • 二、使用步驟
    • 1.引入庫
    • 2.讀入數(shù)據(jù)
  • 總結(jié)


前言

通過已有的產(chǎn)品BOM狀態(tài),運(yùn)用python自動(dòng)整理匯總輸出零部件狀態(tài)至Excel中。

運(yùn)算邏輯:先通過母件編碼狀態(tài)——確認(rèn)出料體狀態(tài)——再通過料體狀態(tài)確認(rèn)出原料狀態(tài)。

? ? ? ?確認(rèn)料體狀態(tài)時(shí),會(huì)存在著同一種同時(shí)存在4種狀態(tài),原因是一種料體會(huì)組裝成不同的產(chǎn)品銷售。當(dāng)一種料體存在著1~4種時(shí),需要按照優(yōu)先順序選取,分別為正常銷售>消耗升級(jí)>消耗淘汰>已下架。同理,原材料也會(huì)存在相同的問題,篩選方法一樣。


提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、現(xiàn)有的數(shù)據(jù)有哪些?

1,BOM表,格式如下:

其中子件編碼分為三個(gè)等級(jí),分別為半成品,料體,原材料,而我們要輸出的時(shí)最后一級(jí),原材料的狀態(tài)

母件編碼母件名稱母件規(guī)格子件編碼子件名稱子件規(guī)格子件計(jì)量單位使用數(shù)量母件存貨分類子件存貨分類

2,產(chǎn)品狀態(tài)表

二、使用步驟

1.引入庫

代碼如下(示例):

import pandas as pd from pandas import DataFrame from openpyxl import load_workbook,Workbook #篩選母件編碼為1開頭的BOM明細(xì) wb=load_workbook('BOM表test.xlsx') ws=wb.active # 新建工作簿 new_wb = Workbook() # 獲取新工作簿中的工作表 new_ws = new_wb.active # 獲取表頭 late_header = [] for cell in ws[1]:late_header.append(cell.value) # 將表頭寫入新工作簿的工作表中 new_ws.append(late_header) for row in ws.iter_rows(min_row=2, values_only=True):name = row[0] #指定欄存貨編碼if name.startswith('1'): #篩選存貨編碼1開頭的成品明細(xì)new_ws.append(row)#print(row)#篩選存貨編碼3開頭的料體明細(xì) new_ws1=new_wb.create_sheet('配方明細(xì)') # 獲取表頭 late_header = [] for cell in ws[1]:late_header.append(cell.value) # 將表頭寫入新工作簿的工作表中 new_ws1.append(late_header)for row in ws.iter_rows(min_row=2, values_only=True):name = row[0] #指定欄存貨編碼if name.startswith('3'): #篩選存貨編碼3開頭的明細(xì),如果用母件分類為料體篩選會(huì)遺漏new_ws1.append(row)new_wb.save('管理狀態(tài)表test.xlsx')#導(dǎo)入數(shù)據(jù) data1=pd.read_excel('成品狀態(tài)表1022.xlsx') df1=DataFrame(data1) #創(chuàng)建DataFrame對(duì)象數(shù)據(jù)data=pd.read_excel('管理狀態(tài)表test.xlsx') df=DataFrame(data) #創(chuàng)建DataFrame對(duì)象數(shù)據(jù) df1=df1.loc[:, ['存貨編碼', '版本狀態(tài)']] #切片,只取存貨編碼,版本狀態(tài)兩列 df=pd.merge(df,df1,on='存貨編碼',how='left') #目的:左連接匹配版本狀態(tài)至BOM表#篩選-確認(rèn)料體狀態(tài)(優(yōu)先級(jí):正常銷售>消耗升級(jí)>消耗淘汰>已下架) data2=((df[df['子件存貨分類']=='料體'][['子件編碼', '子件存貨分類','版本狀態(tài)']]).drop_duplicates()).sort_values(axis=0,by='版本狀態(tài)',ascending=True) #查看條件為料體的子件編碼和存貨分類,并去重 data3=data2.rename(columns={'子件編碼':'存貨編碼'}).reset_index() #修改列名,重置索引 data3['版本狀態(tài)']=data3['版本狀態(tài)'].fillna('無狀態(tài)') #填充空值# 遍歷選出當(dāng)存在多個(gè)同樣的編碼時(shí),標(biāo)記第一個(gè)出現(xiàn)的為“選擇”,其余標(biāo)記為“不選擇” data3['遍歷']=None for i in range(0,len(data3['存貨編碼'])):if data3.iat[i,1] != data3.iat[i-1,1]: #當(dāng)當(dāng)前欄不等于上一行編碼時(shí)data3.iat[i,4] ='選擇'#print('選擇')else:data3.iat[i,4] ='不選擇'#print('不選擇')#篩選最終需要的料體狀態(tài)明細(xì) data3_final=data3[data3['遍歷']=='選擇'][['存貨編碼', '版本狀態(tài)']]#將配方狀態(tài)匹配到“配方明細(xì)”表 data5=pd.read_excel('管理狀態(tài)表test.xlsx',sheet_name='配方明細(xì)') df2=DataFrame(data5) #創(chuàng)建DataFrame對(duì)象數(shù)據(jù) df2['存貨編碼']=df2['存貨編碼'].astype(str) df3=pd.merge(df2,data3_final,on='存貨編碼',how='left')#從配方明細(xì)表中篩選-確認(rèn)原料狀態(tài)(優(yōu)先級(jí):正常銷售>消耗升級(jí)>消耗淘汰>已下架) df4=((df3[df3['子件存貨分類']=='原料'][['子件編碼', '子件存貨分類','版本狀態(tài)']]).drop_duplicates()).sort_values(axis=0,by='子件編碼',ascending=True) #查看條件為原料的子件編碼和存貨分類,并去重 df4['版本狀態(tài)']=df4['版本狀態(tài)'].fillna('已下架') #填充空值#匯總原料通用項(xiàng)(只匯總正常銷售,消耗升級(jí)部分) df4['是否通用']=None #df3['匯總通用項(xiàng)']=df3.groupby('子件編碼')['版本狀態(tài)'].count() for k in range(0,len(df4['子件編碼'])):if df4.iat[k,2]=="1正常銷售"or df4.iat[k,2]=="2消耗升級(jí)":df4.iat[k,3]=1else:df4.iat[k,3]=0 df3_1=df4.groupby('子件編碼')['是否通用'].sum()# 遍歷選出當(dāng)存在多個(gè)同樣的編碼時(shí),標(biāo)記第一個(gè)出現(xiàn)的為“選擇”,其余標(biāo)記為“不選擇” df4['遍歷']=None for j in range(0,len(df4['子件編碼'])):if df4.iat[j,0] != df4.iat[j-1,0]:df4.iat[j,4] ='選擇'#print('選擇')else:df4.iat[j,4] ='不選擇'#print('不選擇')#篩選最終需要的料體狀態(tài)明細(xì) df3_2=df4[df4['遍歷']=='選擇'][['子件編碼', '版本狀態(tài)']] df3_final=pd.merge(df3_2,df3_1,on='子件編碼',how='left')#導(dǎo)出df至excel writer = pd.ExcelWriter('原料總管理表.xlsx') df.to_excel(writer,'BOM狀態(tài)') df3.to_excel(writer,'配方明細(xì)') data3_final.to_excel(writer,'料體狀態(tài)') #data3寫入表格 df3_final.to_excel(writer,'原料狀態(tài)') writer.save()

最終輸出狀態(tài)為:


?

?

總結(jié)

本文目的純屬為了記錄方便以后優(yōu)化,第一次寫代碼仍有很多的bug。

需優(yōu)化數(shù)據(jù):1,與研發(fā)確認(rèn)料體狀態(tài);2,簡化代碼,提高運(yùn)行效率

總結(jié)

以上是生活随笔為你收集整理的自动化办公--通过BOM表输出原材料状态(第一版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线免费观看麻豆 | 成色网| 中文字幕人妻一区二区 | 粉嫩av懂色av蜜臀av分享 | 求一个黄色网址 | 少妇精品视频 | 国产真实乱人偷精品人妻 | 毛片在线免费播放 | 国语对白在线观看 | 久久久久久久久99 | 精品亚洲一区二区三区四区五区 | 久久婷婷网站 | 91精品国产综合久久久蜜臀粉嫩 | 久久影片| 久草免费在线观看 | 色狠狠久久av大岛优香 | 九九九热| 日韩黄色网络 | 久久久久久久性 | 日韩欧美少妇 | 激情综合在线 | 国产精品第三页 | 这里只有精品6 | 丰满熟女人妻一区二区三区 | 亚洲精品久久久久久一区二区 | 99re国产精品 | 国产精品电影网站 | 国产欧美一区二区精品忘忧草 | 男人操女人的视频 | 亚洲国产精品成人va在线观看 | 海角国产乱辈乱精品视频 | 国产网址| 一区二区免费在线播放 | 国产视频一区在线 | 91传媒在线视频 | 国产成人精品一区二区在线小狼 | 亚洲精品国产精品乱码桃花 | 亚洲一区中文字幕在线 | 在线色综合 | 久久久久久久久久久久久久久久久久 | 性歌舞团一区二区三区视频 | 日韩欧美亚洲国产精品字幕久久久 | 日韩久久久久久 | 中文字幕视频 | 邪恶久久 | 被扒开腿一边憋尿一边惩罚 | 啪啪av导航 | 一级a毛片免费观看久久精品 | 国产精品夜夜夜爽张柏芝 | av白浆 | 欧美日韩在线观看一区二区 | 国产欧美一区二区三区在线看蜜臀 | 久久九九热| 欧美aaaaaaaaaa| 亚洲热av| 国产精品区一 | 99成人精品视频 | 国产亚洲欧美日韩高清 | 黄色在线免费观看 | 精品国产一区二 | 欧美精品国产一区 | 国产做受视频 | 黄色片网站在线看 | 在线观看亚洲网站 | 欧美大片在线看免费观看 | 香蕉视频一区二区 | 国产精品999在线观看 | 麻豆专区| 久久发布国产伦子伦精品 | 欧美一区二区三区电影 | 99成人在线视频 | 色性av| 精产国品一二三区 | 污污视频在线免费看 | 嫩草网站在线观看 | 色综合久久88色综合天天6 | 欧美乱做爰xxxⅹ久久久 | 欧美日韩不卡在线 | 亚洲 小说 欧美 激情 另类 | 国产香蕉尹人视频在线 | www久久| 窝窝午夜影院 | 91嫩草欧美久久久九九九 | 欧美一区二区在线视频观看 | 高h捆绑拘束调教小说 | 国产老头和老头xxxx× | 可以免费看av | 全部免费毛片在线播放高潮 | 日本老妇性生活 | 亚洲风情第一页 | 国产良妇出轨视频在线观看 | 99精品视频在线观看 | 椎名空在线观看 | 夜晚福利视频 | 少妇视频一区二区三区 | 免费看黄色一级视频 | 国产女人18毛片水18精 | 人人射人人 | 久久中文字幕高清 |