python提取同目录下多个excel文件中同一列数据合并为单文件并以列名命名保存

您所在的位置:网站首页 Python写入多个重复数据 python提取同目录下多个excel文件中同一列数据合并为单文件并以列名命名保存

python提取同目录下多个excel文件中同一列数据合并为单文件并以列名命名保存

2024-07-17 12:28| 来源: 网络整理| 查看: 265

查看数据

截图为文件夹下多个excel文件 截图为地铁断面流量数据统计表

分析需求 使用pandas查看数据构成生成目标数据的dataframe格式做好目标数据的定位将列名提取生成列表,循环读取将文件夹和文件合并为列表做内循环 直接上代码 import pandas as pd import numpy as np import os ## 读取数据 df = pd.read_excel(r"D:\pythonProject\3号线断面客流数据\20161220线路各区间某日分时断面流量汇总表.xlsx", sheet_name='线路各区间单日分时断面流量汇总表1',header=5,index_col=0) # df = pd.read_excel(r"D:\pythonProject\3号线断面客流数据\20161220线路各区间某日分时断面流量汇总表.xlsx", # sheet_name='线路各区间单日分时断面流量汇总表1')#第一次查看数据使用 df.head()

数据加载

#去除不需要的列字段 df=df.drop(['时段最大断面客流值','合计'],axis=1) # 做一个测列名称转换打印测试 sample_list = df.columns.tolist() # sample_list.remove('时间段') for sample_num in sample_list: sample_num = sample_num.replace('-->','-') print (sample_num)

转换完成截图 接下来做一个循环遍历字段并以字段为文件名导出的小循环体

sample_list = df.columns.tolist() # sample_list.remove('时间段') for sample_num in sample_list: sample_df = df.loc[:,[sample_num]] sample_num = sample_num.replace('-->','-') save_name = str(sample_num) + ".xlsx" sample_df.to_excel(os.path.join(r"D:/pythonProject/3号线断面客流数据/dataup", save_name), sheet_name='Sheet1' ,index=True)

小循环体执行成功,说明单文件多字段列可以生成文件,接下来有多种做法,可供参考。 本文只使用了先循环字段再循环数据表后合成;

dir = r"D:\pythonProject\3号线断面客流数据" all_file_list=os.listdir(dir) sample_list = df.columns.tolist() # sample_list.remove('时间段') for sample_num in sample_list: all_data = pd.DataFrame() for file in all_file_list: if file.endswith('xlsx'): df2 = pd.read_excel(os.path.join(dir,file),sheet_name='线路各区间单日分时断面流量汇总表1',header=5,index_col=0) # df =df.drop(['时段最大断面客流值','合计'],axis=1) # if file ==all_file_list[0]: # sample_df =df2.loc[:,[sample_num]] # all_data = sample_df # else: sample_df =df2.loc[:,[sample_num]] all_data = pd.concat([all_data, sample_df],axis=1) sample_num = sample_num.replace('-->','-') save_name = str(sample_num) + ".xlsx" all_data.to_excel(os.path.join(r"D:/pythonProject/3号线断面客流数据/data上行", save_name), sheet_name='Sheet1' ,index=True)

执行以上程序,即可完成单方向的断面流量统计,如图 文件截图 数据截图 下行断面可同理按照步骤生成

df3 = pd.read_excel(r"D:\pythonProject\3号线断面客流数据\20161220线路各区间某日分时断面流量汇总表.xlsx", sheet_name='线路各区间单日分时断面流量汇总表2',header=5,index_col=0) df3=df3.drop(['时段最大断面客流值','合计'],axis=1) dir = r"D:\pythonProject\3号线断面客流数据" all_file_list=os.listdir(dir) sample_list = df3.columns.tolist() for sample_num in sample_list: all_data = pd.DataFrame() for file in all_file_list: if file.endswith('xlsx'): df4 = pd.read_excel(os.path.join(dir,file),sheet_name='线路各区间单日分时断面流量汇总表2',header=5,index_col=0) sample_df =df4.loc[:,[sample_num]] all_data = pd.concat([all_data, sample_df],axis=1) sample_num = sample_num.replace('-->','-') save_name = str(sample_num) + ".xlsx" all_data.to_excel(os.path.join(r"D:/pythonProject/3号线断面客流数据/data下行", save_name), sheet_name='Sheet1' ,index=True)

至此,15行代码解决一个大工程,宣布完工(当然个人技术较菜,做了很多‘有意义’的尝试,踩了很多坑,另附博文说明有价值的尝试)



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3