最近在整理大批的excel人员数据,但因历史原因,题头写的乱七八遭,导入数据库时时常提醒,就写了个如下函数,统一下表头
# 目录下所有excel换题头
def muHuanTitou(path,biaotou):
df = pd.read_excel(path, None)
# 替换Excel 表格内的空单元格,否则在下一步处理中将会报错
import datetime
str_p = datetime.datetime.now()
dateTime_p = datetime.datetime.strftime(str_p, '%H%M%S')
writer = pd.ExcelWriter('N'+path[:-4]+str(dateTime_p)+'.xlsx')
for sh in df.keys():
fdf = pd.read_excel(path, sh)
df_list=[]
fdf.fillna("", inplace=True)
sjbt=fdf.columns.to_list()
if len(sjbt)>0:
bt=biaotou
xuadd=0
if len(sjbt)==len(biaotou):
bt=biaotou
elif len(sjbt)>len(biaotou):
for i in range(len(sjbt)-len(biaotou)):
bt.append('bt'+str(i))
else:
bt=biaotou
xuadd = len(biaotou)-len(sjbt)
for i in fdf.index.values:
# loc为按列名索引 iloc 为按位置索引,使用的是 [[行号], [列名]]
df_line = fdf.loc[i, fdf.columns].to_dict()
# print(df_line)
for i in range(xuadd):
newl='bt'+str(i)
df_line[newl]=''
# if
# df_line['行业'] = sh # excel的sheet表名为行业 + ';' + df_line['行业']
# 将每一行转换成字典后添加到列表
# if df_line['地区'] != '':
df_list.append(df_line)
nydf = DataFrame(df_list)
nydf.to_excel(excel_writer=writer, sheet_name=sh, header=biaotou)
# print(len(df_list))
writer.save()
writer.close()
|