pandas 多文件数据合并

您所在的位置:网站首页 合并多个dat文件 pandas 多文件数据合并

pandas 多文件数据合并

2024-07-13 07:33| 来源: 网络整理| 查看: 265

本内容来自:https://gairuo.com

看过来

《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。

本内容来自:https://gairuo.com

多文件合并在实际工作中还是比较常见的,汇总表往往费时费力,如果用代码帮我们去做就省力很多,而且还可以复用,就会节省大量时间。

多文件合并

最简单的方法是先单个把数据取出现来,然后进行合并。

df1 = pd.DataFrame(data1) df2 = pd.read_excel('tmp.xlsx') df3 = pd.read_csv('tmp.csv') merged_df = pd.concat([df1, df2, df3])

注意,不要一个一个地去用 concat,这样性能会很差,可以先把所有表格加到列表里,一次性合并:

frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)

一个包含多个 Sheet 的 Excel 合并成一个 DataFrame:

dfm = pd.read_excel('team.xlsx', sheet_name=None) pd.concat(dfm.values()) pd.concat(dfm) # 保留 Sheet 名作为一级索引 读取目录文件

如果文件存在一个目录下,推荐方法:

import glob # 取出目录下所有 xlsx 格式文件 files = glob.glob("data/*.xlsx") cols = ['记录ID', '开始时间', '名称'] # 只取这些列 # 列表推导出对象 dflist = [pd.read_excel(i, usecols=cols) for i in files] df = pd.concat(dflist) # 合并

其他方法:

# 多个文件 pd.concat(map(pd.read_csv, ['data/d1.csv', 'data/d2.csv', 'data/d3.csv'])) pd.concat(map(pd.read_excel, ['data/d1.xlsx', 'data/d2.xlsx', 'data/d3.xlsx'])) # 目录下所有文件 from os import listdir filepaths = [f for f in listdir("./data") if f.endswith('.csv')] df = pd.concat(map(pd.read_csv, filepaths)) # 方法 2 import glob df = pd.concat(map(pd.read_csv, glob.glob('data/*.csv'))) df = pd.concat(map(pd.read_excel, glob.glob('data/*.xlsx'))) 追加列合并

如果需要使用pd.merge()追加列合并时,由于此方法只能合并两个 DataFrame,因此可以用 reduce 来操作完成:

from functools import reduce df = reduce(lambda a, b: pd.merge(a, b, on=['记录ID']), dflist)

只要熟练使用其中一个方法就行。

相关内容 pandas 根据指定列按列合并目录中的 Excel 2020-12-29 10:41:01 数据连接 concat pandas 教程 数据追加 df.append >

更新时间:2021-12-06 08:11:34 标签:pandas 合并 文件



【本文地址】


今日新闻


推荐新闻


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