python合并excel表数据_Python一键合并n个excel表格数据

本文介绍了如何使用Python的os和pandas库批量合并同一文件夹下的多个Excel文件。首先,通过os模块获取文件夹中的所有文件名,然后用pandas的read_csv读取每个文件并拼接数据,最后使用pd.concat将所有数据合并成一个大表,并保存为新的CSV文件。
摘要由CSDN通过智能技术生成

需求

将 files 文件夹下的所有文件的数据合并成一个总文件(注意:每个文件的表头都一致)

d4757bf41c694e4d23ed192fdacf9dc6.png

实现步骤获取 files 文件夹下的所有文件名称

读取每个文件的数据

将每个文件的数据进行拼接

保存至新的文件

获取 files 文件夹下的所有文件名称

首先,我们应该思考的是,Python有没有对应的模块可以帮助我们去获取指定文件夹下所有文件的名称,那文件夹实际上是在操作系统上的(比如:windows,mac),所以,我们就可以使用 Python与操作系统交互的模块:os模块# 导入os

import os

# 改变当前工作路径 至所有文件所在的文件夹下

need_dir = os.chdir(r"C:\Users\lenovo\Desktop\data_ana02\04-auto_merge_files\files")

# 列出所有文件的名称 以列表呈现

need_file_name = os.listdir(need_dir)

need_file_name复制代码

读取每个文件的数据

在这儿,我们就需要思考,怎么读取文件的数据?在 Python 中,那是有相当多的模块可以读取呀,比如:xlrd,openpyxl,numpy,pandas…那选择谁呢?在这个应用场景下,我强烈推荐 pandas# 导入pandas

import pandas as pd

# 读取 云南白药.csv

ylby_df = pd.read_csv("云南白药.csv")

# 显示前五条

ylby_df.head()复制代码

481386e4a61b2838260e74e6640af587.png

大家会发现,读取不同的文件只需要传入不同的文件名就行,那我们怎么读取文件夹下列表的所有文件的数据呢?使用 for 循环遍历文件列表

再读取数据# 取出每个文件的名称

for file_name in need_file_name:

# 读取每个文件的数据

data = pd.read_csv(f"{file_name}")

print(data.head())复制代码

截取其中一部分

aa4a96f2e31ac1e75f8b15e3dd7a2d7f.png

将每个文件的数据进行拼接

怎么将数据如下拼接呢?

db3e4ce800422dd8bd1fcb6049628581.png

那还是使用到我们的老朋友pandas,我们可以使用 pandas.concat() 堆叠拼接。比如,两个表格的拼接代码如下:

99b78b5577984f28304d581baadea8c6.png

那所有文件的数据怎么拼接?此时我们就需要借助到 pandas.concat() 拼接数据,实质上是将每个 df 数据装进一个 列表或者元组中,传进去# 定义 空的数据列表

data_li = []

# 取出每个文件的名称

for file_name in need_file_name:

# 读取每个文件的数据

data = pd.read_csv(f"{file_name}")

# 将数据添加到 空的数据列表中

data_li.append(data)

# print(len(data_li))   # 列表长度返回为4 ,说明构建成功

# 拼接所有文件的数据

all_data = pd.concat(data_li)

# 获取数据的形状 为620行,说明成功

all_data.shape复制代码

保存至新的文件

保存文件直接使用 df.to_csv() 就好了all_data.to_csv("总数据.csv")

复制代码

355a6c0420661716b86f8e868f625bc5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值