拿到中行流水时,每四行为一条记录,举例第1、3行为表头,第2、4行为数据,类似工资条,但工资条只有两行。为方便进行数据分析,则需要仅保留一行表头,然后将两行数据拼接成一行。
# # -*- coding: UTF-8 -*-
from tkinter import *
from tkinter import filedialog
import pandas as pd
from tkinter import messagebox
messagebox.askquestion('提示', '要执行此操作吗')
path = filedialog.askopenfilename() # 打开文件选择对话框
df = pd.read_excel(path,sheet_name='CTIS系统交易流水',header=None)
df.dropna(axis=0,how='all',inplace=True)# 删除包含NaN空行
new_rows = []
Title = pd.concat([df.iloc[0, 0:14], df.iloc[2, 0:14]], axis=0)# 将第1、3行纵向合起来作为标题
new_rows.append(Title)
for i in range(1,len(df),4):
data_row=pd.concat([df.iloc[i, 0:14], df.iloc[i+2, 0:14]], axis=0)
new_rows.append(data_row)
new_df = pd.concat(new_rows, axis=1).T
new_path = filedialog. asksaveasfilename(filetypes=(('Excel files', ('*.xl*', '*.xlsx', '*.xlsm', '*.xlsb', '.xlam', '*.xltx', '*.xltm', '*.xls', '*.xla', '*.xlt', '*.xlm', '*.xlw')),
('Text Files', ('*.txt', '*.csv')),
('all files', '*.*')))
new_df.to_excel(new_path, sheet_name='Result',engine='openpyxl',index=False, header=False)
messagebox.showinfo('提示:','处理完毕')