1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 把数据存入excel文件_Python从原Excel表中抽出数据存入同一文件的新的Sheet(实例53)...

把数据存入excel文件_Python从原Excel表中抽出数据存入同一文件的新的Sheet(实例53)...

时间:2019-06-13 08:39:08

相关推荐

把数据存入excel文件_Python从原Excel表中抽出数据存入同一文件的新的Sheet(实例53)...

“物料表”中包含全年12个月的领用记录,现在要求将5月和8月的记录筛选出来新建工作表存放,并从原表中将这部分数据删掉。

于是乎,开始写码。先导入pandas库,然后指定标题行(header = 2),读取Excel工作簿。展示其前5行,整齐划一,没问题。

importpandasaspd

df=pd.read_excel("物料表.xlsx",header=2)

df.head()

由于要按月份筛选,而原表格没有月份这个字段,因此新增月份字段。月份从哪里来呢?直接从原表“日期”字段中提取,“.dt.month”即可提取原日期中的月份。再展示前5行,最后面多了1列“月份”。一切顺利,继续。

df['月份']=df['日期'].dt.month

df.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

#去掉不需要的月份的数据

defRemove_data(df,month=[]):

foriinmonth:

df=df[df['月份']!=i]

returndf

df_rest=Remove_data(df,[5,8])

df_rest.head()

然后调用ExcelWriter将三个数据写入同一个Excel文件。在写入前,先用drop将月份列删除,它的使命已经完成,可以光荣退休了。ExcelWriter在实例52中有详细说明,请出门右转。在正式使用的时候,Excel文件名直接使用"物料表.xlsx",则可将原文件覆盖。这里为了展示结果,所以用了文件名“物料表_1.xlsx”来区分。ExcelWriter中的模式使用的是默认“写”模式,因此会覆盖原同名文件。

withpd.ExcelWriter('物料表_1.xlsx',engine='openpyxl',

datetime_format='YYYY-MM-DD')aswriter:

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写入数据后,是不会调整单元格格式的,这样的结果很难看很不专业,所以需要用如下代码批量操作一下。

fromopenpyxlimportload_workbook

fromopenpyxl.stylesimportBorder,Side,PatternFill,Font,GradientFill,Alignment

thin=Side(border_style="thin",color="000000")#定义边框粗细及颜色

wb=load_workbook("物料表_1.xlsx")

forsheetnameinwb.sheetnames:

ws=wb[sheetname]

#调整列宽

ws.column_dimensions['A'].width=12

ws.column_dimensions['C'].width=15.5

ws.column_dimensions['G'].width=10

#设置字号,对齐,缩小字体填充,加边框

forrow_numberinrange(2,ws.max_row+1):

forcol_numberinrange(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@,一起探讨解决方案。微信公众号输入“源文件”提取所有源文件及资料。

随手点亮下方“在看”呗,给加个鸡腿儿O(∩_∩)O~!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。