python遍历文件夹中带指定后缀的文件并做数据拼接

1、背景

不知道小伙伴们平时有没有这样的困惑,去平台上面疯狂的导数,然后复制粘贴,做加工处理,做个表格,交给领导看,稍微不注意,还出错,被领导一顿批,下面我介绍一种简单的应用场景,使用代码来批量实现。
具体的情况如下:
(1)在某个文件夹下面,我们想把以xlsx为后缀的文件筛选出来
(2)获取下划线后面的订单id
(3)将xlsx为后缀的文件内容做纵向拼接
文件夹的内容如下:
在这里插入图片描述
订单表20191010的数据如下:
python遍历文件夹中带指定后缀的文件并做数据拼接_第1张图片
订单表20191011的数据如下:
python遍历文件夹中带指定后缀的文件并做数据拼接_第2张图片
想要变成的样式如下:
python遍历文件夹中带指定后缀的文件并做数据拼接_第3张图片

2、分析

简单过一下思路:
(1)首先观察一下文件夹中的文件命名规则,筛选出xlsx后缀的文件;
(2)使用正则找到订单id;
(3)将订单id数据填充到订单表中(纵向填充,范围与行数一致);
(4)将所有订单表数据拼接到一起,并将汇总数据写入到指定文件中(Python会自动根据列名进行拼接数据);

3、代码实现

import os
import re
import pandas as pd

file_path = "D:\\test"  # 文件夹路径
file_list = os.listdir(file_path)  # 获取文件夹下所有文件的名称,包括后缀
# print(file_list)  # 结果是个list,且list中的每个元素是字符串类型

result_df = pd.DataFrame()

# 通过循环拼接每一个xlsx文件的数据
for file in file_list:
    if file.endswith(".xlsx"):  # 筛选出xlsx后缀的文件
        path = os.path.join(file_path, file)  # 通过join得到文件的绝对路径
        order_id = re.findall(r"\d+\d*", file)  # 通过正则获取订单id,返回的是一个list
        
        read_data_1 = pd.read_excel(path, skiprows= 1) # 忽略第1行的数据,直接从第二行开始读取  
        
        # 构造并在指定位置插入订单id列,使用insert函数(这里加在了第1列)
        length = len(read_data_1)
        order_id_col = order_id * length   
        read_data_1.insert(0, "订单id", order_id_col)  # 0 代表位置,首列
        
        # 纵向拼接,python会自动根据列名纵向拼接数据
        result_df = pd.concat([result_df, read_data_1], axis = 0, sort = False)
		
result_df.to_excel("D:\\test\\test.xlsx")  # 将拼接的数据存储到指定文件中

你可能感兴趣的:(python数据分析,批量操作,python,文件遍历,横纵向连接)