python 删除空值且合并excel的操作
适用条件
1:excel表比较多
2:excel的数据量比较大,不然的话excel筛选&手动合并还是很舒服滴~
需求
取出【电话】列中不为空所对应的行的值并且将几张表给合并起来
来来来,放代码了!!
importxlrd importpandasaspd importopenpyxl target_xls="合并表1.xlsx" source_xls=["全1.xlsx","全2.xlsx","全3.xlsx",\ "全4.xlsx","全5.xlsx","全6.xlsx"] sysptoms=pd.DataFrame() foriinrange(len(source_xls)): print(i)#了解打印进度 sheet2=pd.read_excel(source_xls[i]).fillna("")#有空格,填充函数,填的空值。要加fillna,不然无法删除空值所对应的行 sysptom=sheet2[sheet2['电话']!=""]#筛选 sysptoms=pd.concat([sysptoms,sysptom])#两个dataframe合并,相当于合并excel print(type(sysptom)) sysptoms.to_excel(target_xls,index=False)#pandas写入excel用.to_excel print("ok")
补充:python读取excel数据,遇到空单元格的处理方法
读取excel表格时,经常遇到空单元格的情况,这时需要明确的是,空单元格在python中是什么格式,NULL?NAN还是什么?
在用xlrd函数读入excel时,空单元格其实是空字符串''形式
因此处理方法就很简单啦,如下:
infilename=r'D:\aajja.xlsx' workbook=xlrd.open_workbook(infilename) df=workbook.sheet_by_name('sheetname') num_rows=df.nrows-1#我这里是第一行不要,所以跳过了 num_cols=df.ncols t=0 im_data=np.zeros((num_rows,num_cols)) forcurr_rowinrange(1,num_rows+1): forcurr_colinrange(num_cols): rawVal=df.cell(curr_row,curr_col).value ifisinstance(rawVal,str): im_data[curr_row-1,curr_col]=np.nan else: im_data[curr_row-1,curr_col]=float(rawVal)
其实重点就一句:
ifisinstance(rawVal,str)
判断该单元格数值是否为字符串,当然如果你的excel中本来就有字符串格式数据,这里可以更改为判断是否为空字符串,稍微修改一下即可
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。