日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

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

文章目錄

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


前言

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

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

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


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

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

1,BOM表,格式如下:

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

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

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

二、使用步驟

1.引入庫

代碼如下(示例):

import pandas as pd from pandas import DataFrame from openpyxl import load_workbook,Workbook #篩選母件編碼為1開頭的BOM明細 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開頭的成品明細new_ws.append(row)#print(row)#篩選存貨編碼3開頭的料體明細 new_ws1=new_wb.create_sheet('配方明細') # 獲取表頭 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開頭的明細,如果用母件分類為料體篩選會遺漏new_ws1.append(row)new_wb.save('管理狀態(tài)表test.xlsx')#導入數(shù)據(jù) data1=pd.read_excel('成品狀態(tài)表1022.xlsx') df1=DataFrame(data1) #創(chuàng)建DataFrame對象數(shù)據(jù)data=pd.read_excel('管理狀態(tài)表test.xlsx') df=DataFrame(data) #創(chuàng)建DataFrame對象數(shù)據(jù) df1=df1.loc[:, ['存貨編碼', '版本狀態(tài)']] #切片,只取存貨編碼,版本狀態(tài)兩列 df=pd.merge(df,df1,on='存貨編碼',how='left') #目的:左連接匹配版本狀態(tài)至BOM表#篩選-確認料體狀態(tài)(優(yōu)先級:正常銷售>消耗升級>消耗淘汰>已下架) 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)') #填充空值# 遍歷選出當存在多個同樣的編碼時,標記第一個出現(xiàn)的為“選擇”,其余標記為“不選擇” data3['遍歷']=None for i in range(0,len(data3['存貨編碼'])):if data3.iat[i,1] != data3.iat[i-1,1]: #當當前欄不等于上一行編碼時data3.iat[i,4] ='選擇'#print('選擇')else:data3.iat[i,4] ='不選擇'#print('不選擇')#篩選最終需要的料體狀態(tài)明細 data3_final=data3[data3['遍歷']=='選擇'][['存貨編碼', '版本狀態(tài)']]#將配方狀態(tài)匹配到“配方明細”表 data5=pd.read_excel('管理狀態(tài)表test.xlsx',sheet_name='配方明細') df2=DataFrame(data5) #創(chuàng)建DataFrame對象數(shù)據(jù) df2['存貨編碼']=df2['存貨編碼'].astype(str) df3=pd.merge(df2,data3_final,on='存貨編碼',how='left')#從配方明細表中篩選-確認原料狀態(tài)(優(yōu)先級:正常銷售>消耗升級>消耗淘汰>已下架) df4=((df3[df3['子件存貨分類']=='原料'][['子件編碼', '子件存貨分類','版本狀態(tài)']]).drop_duplicates()).sort_values(axis=0,by='子件編碼',ascending=True) #查看條件為原料的子件編碼和存貨分類,并去重 df4['版本狀態(tài)']=df4['版本狀態(tài)'].fillna('已下架') #填充空值#匯總原料通用項(只匯總正常銷售,消耗升級部分) df4['是否通用']=None #df3['匯總通用項']=df3.groupby('子件編碼')['版本狀態(tài)'].count() for k in range(0,len(df4['子件編碼'])):if df4.iat[k,2]=="1正常銷售"or df4.iat[k,2]=="2消耗升級":df4.iat[k,3]=1else:df4.iat[k,3]=0 df3_1=df4.groupby('子件編碼')['是否通用'].sum()# 遍歷選出當存在多個同樣的編碼時,標記第一個出現(xiàn)的為“選擇”,其余標記為“不選擇” 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)明細 df3_2=df4[df4['遍歷']=='選擇'][['子件編碼', '版本狀態(tài)']] df3_final=pd.merge(df3_2,df3_1,on='子件編碼',how='left')#導出df至excel writer = pd.ExcelWriter('原料總管理表.xlsx') df.to_excel(writer,'BOM狀態(tài)') df3.to_excel(writer,'配方明細') 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ā)確認料體狀態(tài);2,簡化代碼,提高運行效率

總結(jié)

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

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