pandas合并多个相同类型(excel、csv)表格

需求:在一个文件中,有多个同类型的文件(我这里是excel文件),它们的title都是一样,不同的是数据大小,现在需要将它们批量合并成一个文件(csv文件,csv在操作上要比excel好太多)

文件示例


思路:先对文件夹中同类型的文件遍历,存放到列表里,再使用pandas的concat函数合并,方向是向下合并,再删掉全是空值的行保存到csv文件即可。

# -*- coding: utf-8 -*-
'''
Author: Zion
@IDE:  PyCharm
@Date: 2023/7/19 9:36
'''
import pandas as pd
import os


def concat_excel(path, order_name, settle_name):
    file_name_list = os.listdir(path)
    # 订单表
    order_data_list = []
    # 结算表
    settle_data_list = []
    for idx in file_name_list:
        # 前缀为订单的是订单表
        if idx.startswith('订单'):
            data = pd.read_excel(path + '\\' + idx)
            order_data_list.append(data)
        # 前缀为订单流水的是结算表
        if idx.startswith('订单流水'):
            # 注意:没有一样的标题合并要设置header=None,不然会错位
            # data = pd.read_excel(path + '\\' + idx, header=None)
            data = pd.read_excel(path + '\\' + idx)
            settle_data_list.append(data)

    # 订单表合并
    order_data_all_df = pd.concat(order_data_list, axis=0)  # axis=0 向下合并
    # 删掉全是空值的行
    order_data_all_df.dropna(axis="index", how='all', inplace=True)
    order_data_all_df.to_csv(r'C:\Users\admin\Desktop\\' + order_name, index=False)

    # 结算表合并
    settle_data_all_df = pd.concat(settle_data_list, axis=0)  # axis=0 向下合并
    # 删掉全是空值的行
    settle_data_all_df.dropna(axis="index", how='all', inplace=True)
    settle_data_all_df.to_csv(r'C:\Users\admin\Desktop\\' + settle_name, index=False)

    print('程序运行成功..')


if __name__ == '__main__':
    path = r'C:\Users\admin\Desktop\XXXXX文件\\'  # 将所有要合并的excel文件放在该路径文件夹
    save_order_name = '总订单表.csv'
    save_settle_name = '总结算表.csv'
    concat_excel(path, save_order_name, save_settle_name)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值