需求:除了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