Python实现多个Sheet文件合并,添加列
需求:除了xx表,其它表添加xx_id字段;
代码如下
import os
import pandas as pd
base_dire = "./data"
result_file = './result/'
for path,dir_list,file_list in os.walk(base_dire):
for file_name in file_list:
#文件名转小写,文件结尾必须是'xls'
if str(file_name).lower().endswith('xls'):
file_path = os.path.join(path, file_name)
#读取ExcelFile获取sheet_names
df = pd.ExcelFile(file_path)
sheet_names = df.sheet_names
#如果'xx信息'在 sheet_names 这个列表里面能找到,就往下面循环,这样就排除了'Sheet1、Sheet2、Sheet3'的sheet
if 'xx信息' in sheet_names:
xx_df_row = pd.read_excel(file_path, sheet_name='xx信息')
#loc函数,通过所以和列名获取数据
xx_id = xx_df_row.loc[0, 'xxx']
csv_file_path = f'{result_file}xx信息.csv'
#xx信息表,不添加 xx_id 字段,所以不用处理直接写到csv
xx_df_row.to_csv(csv_file_path, mode='a', index=False,
header=(not os.path.exists(csv_file_path)))
#删除'xx信息'这个sheet_name
sheet_names.remove('xx信息')
for sheet_name in sheet_names:
df_row = pd.read_excel(file_path, sheet_name=sheet_name)
#0表示列的位置,添加'patient_id'列
df_row.insert(0,'xx_id',xx_id)
csv_file_path = f'{result_file}{sheet_name}.csv'
#not os.path.exists(csv_file_path) 追加的时候,判断文件是否存在,如果不存在则添加标题行,否则不添加标题行
df_row.to_csv(csv_file_path, mode='a',index=False,header=(not os.path.exists(csv_file_path)))
reference
1.python to_csv追加DataFrame 表头重复问题
https://blog.csdn.net/qq_41562377/article/details/108661459?utm_source=app&app_version=4.15.2&utm_source=app
2.DataFrame 新增列的五种方法
https://blog.csdn.net/qq_35318838/article/details/102720553