利用Python批量合并csv

  • 2020 年 2 月 26 日
  • 笔记

前几天遇到一个工作,需要将几个分别包含几十万行的csv文件的某3列合并成1个csv文件,当时是手工合并的: 1、csv另存为excel; 2、删除不需要的列,仅保留想要的列 3、excel另存为csv 4、最后,手工合并处理好的csv 不得不说,这样操作效率真的很低,尤其是操作几十万行的文件,当时就想利用python代码肯定可以实现,今天利用周末的时间好好研究了一下,终于实现了,操作几十万行的文件只需要一两分钟,比手工高效多了。 实现思路如下: 1、利用os模块获取文件下所有csv文件(表结构相同) 2、用pandas打开第一个文件; 3、循环打开剩下的文件; 4、利用pd.concat拼接不同的df,该方法可以自动去除多余的标题行; 5、挑选需要的列,去重; 6、将结果输出文csv文件; 完整代码如下:

import pandas as pd  import os    path = input('请输入文件夹路径: ')  files = os.listdir(path)  csv_list = []  for f in files:      if os.path.splitext(f)[1] == '.csv':          csv_list.append(path + '\' + f)      else:          pass  df = pd.read_csv(csv_list[0], low_memory=False)  for i in range(1, len(csv_list)):      df_i = pd.read_csv(csv_list[i], low_memory=False)      pieces = [df[:], df_i[:]]      df = pd.concat(pieces).drop_duplicates()  df = df.iloc[:, [1, 6, 7]]  #想保留的列的编号。0为起点  df.to_csv(path +'\csv_merge.csv', index=None, encoding='gbk')