1. 项目背景
工作中发给客户的对账单是以天为单位生成的xls文件,但是客户需要每月进行账务核对,故整合每个月多张xls对账单。
因为日对账单中,为了方便客户对账会在1、2、3行列出表头,在最后一行进行合计。
在整合的时候除去表头和最后的合计行生成CSV文件,方便客户按月进行对账。
2. 特点
关键字:pandas、面向对象、Excel、CSV、去除首、尾行、concat纵向合并、os文件读取
将脚本整理为面向对象结构,将文件存放路径"open_path"和文件保存路径"save_path"作为形参,在使用时,更改形参即可。
3. 代码:pandas合并xls文件去除首尾并保存为.csv文件
import os
import pandas as pd
class Concat(object):
def __init__(self, path_open, path_save):
self.path_open = path_open
self.path_save = path_save
def open_save(self):
df2 = []
for root, dirs, files in os.walk(self.path_open):
for file in files:
file_path = os.path.join(root, file)
df = pd.read_excel(file_path)
df1 = df[2:]
df1 = df1[:-1]
df2.append(df1)
data = pd.concat(df2)
data.to_csv(self.path_save, index=False)
print(data.head())
if __name__ == "__main__":
a = Concat(r'/Users/Minute/Downloads/XXX交易', r'/Users/Minute/Downloads/无首尾concat_2.csv')
a.open_save()