将多个数据类型相同的csv文件合并
有时我们会遇到相同类型的数据存在了多个csv文件中,我们需要把这些csv合并为一个文件
如果需要处理的csv文件较多的话,最好先以一定的命名方式按序对csv文件进行命名,方便检索
在重命名之后,我们从指定的路径中寻找包含特定字符的所有csv文件,输出为文件名列表,代码实现如下
函数使用了os库,需要先引用
import os
os.walk(dir)函数会将指定目录下的主目录和所有目录,文件名输出出来,以此为基础可以筛选出需要的文件名
def find_all_csv(dir1,strincsv): result=[] out=[] for maindir, subdir, file_name_list in os.walk(dir1): #print("1:",maindir) #print("2:",subdir) #print("3:",file_name_list) for filename in file_name_list: apath = os.path.join(maindir, filename) result.append(apath) for i in range(0,len(result)-1): if result[i].find('.csv')!=-1: out.append(result[i]) return out
在获取需要的csv文件名列表后,把数据从文件读出来,先引用pandas库
import pandas as pd
由于数据类型相同,只要从文件中依次读出来,再写进新的文件就可以了
注意在写入csv文件时不要加行索引,因为多个csv文件的行索引是会出现重复的
def csv_merge(n): list1=[] list1=find_all_csv('./data/','a') list1.sort() list1.sort(key=str.__len__) del list1[n:] df=pd.read_csv(list1[0]) df.to_csv('./data/'+'out.csv',encoding="utf_8",index=False,mode='a') del list1[0] for li in list1: df=pd.read_csv(li) df.to_csv('./data/'+'out.csv',encoding="utf_8",index=False,header=False,mode='a')
由于数据类型相同,所以在写入同一个文件时并不需要额外的操作,实现很简单。