python 刪除空值且合並excel的操作
適用條件
1:excel表比較多
2:excel的數據量比較大,不然的話excel篩選&手動合並還是很舒服滴~
需求
取出【電話】列中不為空所對應的行的值並且將幾張表給合並起來
來來來,放代碼瞭!!
import xlrd import pandas as pd import openpyxl target_xls = "合並表1.xlsx" source_xls = ["全1.xlsx", "全2.xlsx","全3.xlsx",\ "全4.xlsx","全5.xlsx","全6.xlsx"] sysptoms=pd.DataFrame() for i in range(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)) for curr_row in range(1, num_rows+1): for curr_col in range(num_cols): rawVal = df.cell(curr_row, curr_col).value if isinstance(rawVal, str): im_data[curr_row - 1, curr_col] = np.nan else: im_data[curr_row - 1, curr_col] = float(rawVal)
其實重點就一句:
if isinstance(rawVal, str)
判斷該單元格數值是否為字符串,當然如果你的excel中本來就有字符串格式數據,這裡可以更改為判斷是否為空字符串,稍微修改一下即可
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- python 使用xlsxwriter循環向excel中插入數據和圖片的操作
- python 對excel交互工具的使用詳情
- Python使用xlrd和xlwt實現自動化操作Excel
- Python對Excel進行處理的實操指南
- Python自動化辦公之讀取Excel數據的實現