把数据存入excel文件_Python从原Excel表中抽出数据存入同一文件的新的Sheet(实例53)...
“物料表”中包含全年12個月的領用記錄,現在要求將5月和8月的記錄篩選出來新建工作表存放,并從原表中將這部分數據刪掉。
于是乎,開始寫碼。先導入pandas庫,然后指定標題行(header = 2),讀取Excel工作簿。展示其前5行,整齊劃一,沒問題。
import?pandas?as?pddf?=?pd.read_excel("物料表.xlsx",?header??=?2)
df.head()
由于要按月份篩選,而原表格沒有月份這個字段,因此新增月份字段。月份從哪里來呢?直接從原表“日期”字段中提取,“.dt.month”即可提取原日期中的月份。再展示前5行,最后面多了1列“月份”。一切順利,繼續。
df['月份']=df['日期'].dt.monthdf.head()
下面要刪選出5月的數據,于是df[df['月份']==5]暴力提取,并存入df5。展示一下前5行,正常。同樣的方法刪選8月份的數據。
df8?=?df[df['月份']==8]df8.head()
然后獲取除開5月和8月的數據。因涉及到批量重復操作,還是定義個函數比較簡潔。函數Remove_data包含兩個參數,一個是df(即傳入的DataFrame),另一個是月份列表。遍歷月份列表,逐個剔除所選月份的數據。“df[df['月份']!=i]”表示只保留"i"之外的數據,"!=" 是不等號。此例,先剔除5月的數據,再剔除8月的數據,剔除好的數據存入df_rest。
#去掉不需要的月份的數據def?Remove_data(df,month=[]):
????for?i?in?month:
????????df?=?df[df['月份']!=i]
????return?df
df_rest?=?Remove_data(df,[5,8])
df_rest.head()
然后調用ExcelWriter將三個數據寫入同一個Excel文件。在寫入前,先用drop將月份列刪除,它的使命已經完成,可以光榮退休了。ExcelWriter在實例52中有詳細說明,請出門右轉。在正式使用的時候,Excel文件名直接使用"物料表.xlsx",則可將原文件覆蓋。這里為了展示結果,所以用了文件名“物料表_1.xlsx”來區分。ExcelWriter中的模式使用的是默認“寫”模式,因此會覆蓋原同名文件。
with?pd.ExcelWriter('物料表_1.xlsx',?engine='openpyxl',????????????????????datetime_format='YYYY-MM-DD')?as?writer:
????df5.drop('月份',axis?=?1).to_excel(writer,?sheet_name='5月',index?=?False)
????df8.drop('月份',axis?=?1).to_excel(writer,?sheet_name='8月',index?=?False)
????df_rest.drop('月份',axis?=?1).to_excel(writer,?sheet_name='剩余月份',index?=?False)
因為ExcelWriter寫入數據后,是不會調整單元格格式的,這樣的結果很難看很不專業,所以需要用如下代碼批量操作一下。
from?openpyxl?import?load_workbookfrom?openpyxl.styles?import?Border,?Side,?PatternFill,?Font,?GradientFill,?Alignment
thin?=?Side(border_style="thin",?color="000000")#定義邊框粗細及顏色
wb?=?load_workbook("物料表_1.xlsx")
for?sheetname?in?wb.sheetnames:????
????ws?=?wb[sheetname]
????#?調整列寬
????ws.column_dimensions['A'].width?=?12
????ws.column_dimensions['C'].width?=?15.5
????ws.column_dimensions['G'].width?=?10
????#設置字號,對齊,縮小字體填充,加邊框
????for?row_number?in?range(2,?ws.max_row+1):
????????for?col_number?in?range(1,ws.max_column+1):
????????????c?=?ws.cell(row=row_number,column=col_number)
????????????c.font?=?Font(size=10)
????????????c.border?=?Border(top=thin,?left=thin,?right=thin,?bottom=thin)
????????????c.alignment?=?Alignment(horizontal="left",?vertical="center")
wb.save("物料表_1.xlsx")
當當當當,上結果圖。可見,在“剩余月份”中,5月和8月的數據已經毫不神奇地不見了。就醬。
如果您有需要處理的問題,可發郵件到我郵箱:donyo@qq.com,一起探討解決方案。微信公眾號輸入“源文件”提取所有源文件及資料。
隨手點亮下方“在看”唄,給加個雞腿兒O(∩_∩)O~!
總結
以上是生活随笔為你收集整理的把数据存入excel文件_Python从原Excel表中抽出数据存入同一文件的新的Sheet(实例53)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 绘制平滑曲线_用pytho
- 下一篇: websocket python爬虫_p