技术
质量
管理
杂谈
导读
Microsoft Excel几乎无处不在,使用Excel既可以保存数据,还可以跟踪数据活动趋势。人们使用Excel的方式五花八门,难以计数。Excel已经成为商业活动中不可或缺的工具。
Excel本身不仅可以实现数据电子化,还可以通过VBA来实现数据自动化。随着Python语言的兴起,数据自动化显得更加方便和快捷。使用Python操作数据可能会是未来的一个趋势。
采用pandas提供的read_excel函数可以读取Excel文件,但如果遇到带有制表符分隔的Excel文件,read_excel就无能为力了。而带有制表符分隔的Excel文件在系统下载数据时是经常出现的一种格式。
本文目的是将一个路径下的所有带有制表符分隔的Excel文件内容合并,并且去掉重复项,然后另存为一个新的Excel文件。
01
代码
import csvimport pandas as pdimport globimport osinput_path = r'E:\01-工作\01-动力总成\01-各零部件\15-2048-DMTL\01-R3数据'output_file = r'D:\pythonProject\venv\result\test111.xlsx'def W_Excel(input_path,output_file): dataframe = [] list = [] frist_file = True all_workbooks = glob.glob(os.path.join(input_path,'*.xls*')) for workbook in all_workbooks: with open(workbook) as tsv: if frist_file: for line in csv.reader(tsv, dialect="excel-tab"): list.append(line) head_name = list[0] frist_file = False else: lines = csv.reader(tsv, dialect="excel-tab") next(lines, None) for line in lines: list.append(line) dataframe = pd.DataFrame(list) dataframe.drop(0, axis=0, inplace=True) dataframe.columns = head_name dataframe.insert(0,'索赔单号',dataframe['维修站'].apply(lambda x:x[3:]).astype(str) + dataframe['申请号'].astype(str)) write = pd.ExcelWriter(output_file) dataframe.to_excel(write, sheet_name='new', index=False, header=True) write.save()if __name__ == "__main__": W_Excel(input_path, output_file)
02
代码截图
03
代码解析
第14行代码:使用glob模块和os模块中的函数创建了一个输入文件列表以供处理。os模块中的os.path.join()函数将函数圆括号中的两部分连接在一起。input_path是包含输入文件的文件夹的路径。glob模块中的glob.glob()函数将星号(*)转换为实际的文件名。通过glob.glob()函数和os.path.join()函数创建了一个包含所有文件的列表。
第18行代码:通过csv模块的reader函数可以读取带有制表符分隔的Excel文件,这时dialect参数需要设置成"excel-tab"。
第28行代码:使用drop函数删除行或列,axis=0时表示删除行,axis=1时表示删除列。第一个参数表示删除第1行。inplace=True表示直接在原数据上进行删除操作。
第29行代码:通过csv模块的reader函数读取的数据默认是没有表头的,需要通过columns来指定表头。
第19行代码:通过insert函数在数据块中插入一列,第一个参数表示插入列的保存位置。