使用的前提记得安装python的环境。
import os
import pandas as pd
def listdir(path): #传入根目录
file_list = []
for file in os.listdir(path):
file_path = os.path.join(path, file) #获取绝对路径
if os.path.isdir(file_path): #如果还是文件夹,就继续迭代本函数
listdir(file_path)
elif os.path.splitext(file_path)[1] == '.xlsx' or os.path.splitext(file_path)[1] == '.xlsx': #判断文件是否是Excel文件
file_list.append(file_path)
return file_list #返回Excel文件路径列表
if __name__ == '__main__':
path="C://Users//86130//Desktop//pyexcel//"
file_names=listdir(path)
frames = []
try:
for file_name in file_names:
print("---------------BEGAIN---------------\n 正在合并:")
ls_data = pd.read_excel(file_name)
df = pd.DataFrame(data=ls_data)
#print(df)
frames.append(df)
result = pd.concat(frames, ignore_index=True)
# 根据"代码"列进行去重
result = result.drop_duplicates(subset=['代码'], keep='first')
# 删除空行
empty_rows = result[result['单位'].isnull()].index
result.drop(empty_rows, inplace=True)
#规格型号补空
result.loc[result['规格'].isnull(), '规格'] = ' '
result.drop('来源', axis=1, inplace=True)
#改名
result.rename(columns={'名称': '名称'}, inplace=True)
#加一列
result.insert(result.columns.get_loc("超市名称") + 1, "超市全名", '')
# 将"超市全名"列的数据移动到"超市名称"列中
result[超市全名'] = result['全名']
#补全超市全名
result['超市全名'].fillna(result['超市名称'], inplace=True)
result.drop('代码', axis=1, inplace=True)
#超市全名给超市种类
result.insert(0, 超市种类名称', result['超市全名'].str.split('_').str[0])
result.drop('全名', axis=1, inplace=True)
result.insert(result.columns.get_loc("超市全名") + 1, "超市类别", '')
# 交换列的位置
result['超市名称'], result['单位'] = result['单位'], result['超市名称']
# 交换表头中的列名
result.rename(columns={'超市名称': '单位', '单位': '超市'}, inplace=True)
#添加列
result.insert(result.columns.get_loc("型号") + 1, "超市属性", '')
result.insert(result.columns.get_loc("超市名称") + 1, "最低库存", 1)
result.insert(result.columns.get_loc("最低库存") + 1, "最高库存", 10)
result.drop('默认超市', axis=1, inplace=True)
//修改当前列的数据格式
df = pd.read_excel(excel_file, parse_dates=['日期'], date_format="%Y-%m-%d %H:%M:%S")
result.to_excel("C://Users//86130//Desktop//pyexcel//mergeS1.xlsx", index=False)
print(file_name + "已合并")
except Exception as e:
print(e)
print("写入失败!")
#pass