本文翻译自:Import multiple csv files into pandas and concatenate into one DataFrame

I would like to read several csv files from a directory into pandas and concatenate them into one big DataFrame. 我想将目录中的多个csv文件读入pandas,并将它们连接成一个大的DataFrame。 I have not been able to figure it out though. 我还无法弄清楚。 Here is what I have so far: 这是我到目前为止的内容:

import glob
import pandas as pd# get data file names
path =r'C:\DRO\DCL_rawdata_files'
filenames = glob.glob(path + "/*.csv")dfs = []
for filename in filenames:dfs.append(pd.read_csv(filename))# Concatenate all data into one DataFrame
big_frame = pd.concat(dfs, ignore_index=True)

I guess I need some help within the for loop??? 我想我在for循环中需要一些帮助吗???


#1楼

参考:https://stackoom.com/question/1PijC/将多个csv文件导入到pandas中并串联到一个DataFrame中


#2楼

If you have same columns in all your csv files then you can try the code below. 如果所有csv文件中的列均相同,则可以尝试以下代码。 I have added header=0 so that after reading csv first row can be assigned as the column names. 我添加了header=0以便在读取csv之后可以将第一行分配为列名。

import pandas as pd
import globpath = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(path + "/*.csv")li = []for filename in all_files:df = pd.read_csv(filename, index_col=None, header=0)li.append(df)frame = pd.concat(li, axis=0, ignore_index=True)

#3楼

Edit: I googled my way into https://stackoverflow.com/a/21232849/186078 . 编辑:我用谷歌搜索https://stackoverflow.com/a/21232849/186078 。 However of late I am finding it faster to do any manipulation using numpy and then assigning it once to dataframe rather than manipulating the dataframe itself on an iterative basis and it seems to work in this solution too. 但是,最近我发现使用numpy进行任何操作,然后将其分配给数据框一次,而不是在迭代的基础上操纵数据框本身,这样更快,并且似乎也可以在此解决方案中工作。

I do sincerely want anyone hitting this page to consider this approach, but don't want to attach this huge piece of code as a comment and making it less readable. 我确实希望任何访问此页面的人都考虑采用这种方法,但又不想将这段巨大的代码作为注释附加到可读性较低的地方。

You can leverage numpy to really speed up the dataframe concatenation. 您可以利用numpy真正加快数据帧的连接速度。

import os
import glob
import pandas as pd
import numpy as nppath = "my_dir_full_path"
allFiles = glob.glob(os.path.join(path,"*.csv"))np_array_list = []
for file_ in allFiles:df = pd.read_csv(file_,index_col=None, header=0)np_array_list.append(df.as_matrix())comb_np_array = np.vstack(np_array_list)
big_frame = pd.DataFrame(comb_np_array)big_frame.columns = ["col1","col2"....]

Timing stats: 时间统计:

total files :192
avg lines per file :8492
--approach 1 without numpy -- 8.248656988143921 seconds ---
total records old :1630571
--approach 2 with numpy -- 2.289292573928833 seconds ---

#4楼

An alternative to darindaCoder's answer : 替代darindaCoder的答案 :

path = r'C:\DRO\DCL_rawdata_files'                     # use your path
all_files = glob.glob(os.path.join(path, "*.csv"))     # advisable to use os.path.join as this makes concatenation OS independentdf_from_each_file = (pd.read_csv(f) for f in all_files)
concatenated_df   = pd.concat(df_from_each_file, ignore_index=True)
# doesn't create a list, nor does it append to one

#5楼

If the multiple csv files are zipped, you may use zipfile to read all and concatenate as below: 如果压缩了多个csv文件,则可以使用zipfile读取所有文件并进行如下连接:

import zipfile
import numpy as np
import pandas as pdziptrain = zipfile.ZipFile('yourpath/yourfile.zip')train=[]for f in range(0,len(ziptrain.namelist())):if (f == 0):train = pd.read_csv(ziptrain.open(ziptrain.namelist()[f]))else:my_df = pd.read_csv(ziptrain.open(ziptrain.namelist()[f]))train = (pd.DataFrame(np.concatenate((train,my_df),axis=0), columns=list(my_df.columns.values)))

#6楼

import glob, os
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join('', "my_files*.csv"))))

将多个csv文件导入到pandas中并串联到一个DataFrame中相关推荐

  1. csv文件导入sqlite

    由于初次使用SQLite,尝试把之前一个csv文件导进去,看了网上各种教程,大多是在SQLite shell模式下使用的,比较麻烦, 这里用了pandas,来讲csv文件导入到sqlite数据库中 i ...

  2. 收藏!用Python一键批量将任意结构的CSV文件导入MySQL数据库。

    Python有很多库可以对CSV文件和Excel文件进行自动化和规模化处理.但是,使用数据库可以将计算机完成任务的能力提升成千上万倍! 那么问题来了,如果有很多个文件需要导入数据库,一个一个操作效率太 ...

  3. mysql可视化导入csv文件_我们如何将数据从.CSV文件导入MySQL表?

    实际上,CSV也是一个文本文件,其中的值由逗号分隔,换句话说,我们可以说该文本文件带有CSV(逗号分隔的值).在将数据从.CSV文件导入到MySQL表时,我们需要将FIELDS SEPARATED O ...

  4. navicat 导入csv未响应_使用navicat将csv文件导入mysql

    本文为大家分享了使用navicat将csv文件导入mysql的具体代码,供大家参考,具体内容如下 1.打开navicat,连接到数据库并找到自己想要导入数据的表.数据库表在指定数据库下的表下. 2.右 ...

  5. python导入csv文件-Python从CSV文件导入数据和生成简单图表

    原标题:Python从CSV文件导入数据和生成简单图表 我们已经完成Python的基础环境搭建工作,现在我们尝试导入CSV数据 我们准备一个csv测试数据,文件名是csv-test-data.csv数 ...

  6. 将csv文件导入到数据库中

    1.csv文件简介 CSV全称 Comma Separated values,是一种用来存储数据的纯文本文件格式,通常用于电子表格或数据库软件.这样你就发现了,csv其实就是纯文本文件,可以使用记事本 ...

  7. csv文件导入导出到mysql

    为什么80%的码农都做不了架构师?>>>    1. 从mysql中导出csv文件 echo "select * from table into outfile '/tmp ...

  8. csv导入mysql linux_如何将CSV文件导入MySQL表

    如何将CSV文件导入MySQL表 我有一个未规范化的事件-来自客户端的日记CSV,我试图将它加载到MySQL表中,以便将其重构为正常的格式.我创建了一个名为"CSVImport"的 ...

  9. excel导入csv文件_如何将包含以0开头的列的CSV文件导入Excel

    excel导入csv文件 Microsoft Excel will automatically convert data columns into the format that it thinks ...

最新文章

  1. wpf每隔一小时_包河区徐河排涝站24小时不间断运作 11座区管泵站全面应战保安澜...
  2. 编程入门python语言是多大孩子学的-Python 适合初学编程的人学吗?
  3. 汽车之家基于 Flink 的数据传输平台的设计与实践
  4. another CRM inbound debug - 另一个CRM中间件的调试记录
  5. 计算机二级web题目(3)--HTML基础
  6. Vivado Design Suite用户指南之约束的使用第二部分(约束方法论)
  7. NOIp2018滚粗记
  8. redisson 大量ping操作,导致 tps过高
  9. 2017.3.6 地精部落 思考记录
  10. 自学前端开发:想要学习成为一名优秀的前端开发者,代码之外需要关注的问题
  11. LAMP+Zabbix课程总结
  12. 初步解决leiningen配置到Eclipse中出错的问题
  13. [导入]【布鲁斯威利斯】【虎胆龙威4最终珍藏版】【1024x432RMVB 1.41GB】【20:50】...
  14. java下载不了怎么_如何下载和安装Java
  15. 英特尔老款CPU支持虚拟化对照表(转)
  16. 区分单音节,双音节和多音节
  17. 计算机硬件技术基础 试题与答案,计算机硬件技术基础网上作业及答案
  18. 单道批处理操作系统、多道批处理操作系统以及分时操作系统区别
  19. 话费充值接口文档源码(2)
  20. 多层次边缘特征引导的图像去噪网络

热门文章

  1. 用神经集认识手写数字
  2. Google Play服务中的人脸检测
  3. Github上删除fork的仓库
  4. 关于程序员能做什么副业,相关文章用机器学习算法分析
  5. 第十、十一周项目一-点-圆-圆柱类族的设计(3)
  6. 使用Android Studio新建Project并建立多个module
  7. Jazzy 文档生成器使用
  8. Linux boot启动串口出现乱码,使用 am335x-evm-sdk-src-02.00.01.07 的源码,UBOOT阶段使用LCD控制器后,内核启动串口控制台输出乱码。...
  9. uniapp 生成Android证书及.keystore转.jks、.pem
  10. InetAddress类和InetSocketAddress的使用