将多个数据类型相同的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')

 由于数据类型相同,所以在写入同一个文件时并不需要额外的操作,实现很简单。

 

posted @ 2019-09-06 20:18  btc  阅读(837)  评论(0编辑  收藏  举报