利用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')