美文网首页
python读取csv写入csv

python读取csv写入csv

作者: 一杭oneline | 来源:发表于2019-12-11 18:38 被阅读0次

    背景:工作需要从大量CSV中读取列名,对出数据库字段的表名是什么意思
    原材料:一堆CSV 是从oracle里导出来的
    遇到的坑:dataframe合并,dataframe列名录入到新的dataframe中,dataframe合并后重新索引,非utf-8的CSV读取不了
    格式:

    id  name XXX
    X  X      XXX
    
    import os
    import pandas as pd
    #import xlrd,xlwt
    #from xlutils.copy import copy as xl_copy
    
    def readcsv(dir_path):
        df_comp = pd.DataFrame()  # 存储合并txt数据
        filelist = []
        for file in os.listdir(dir_path):
            if file.endswith('csv'):
                filename = os.path.join(dir_path, file)  # 路径拼接函数
                df = pd.read_csv(filename, encoding = 'gb18030')  #csv不是UTF-8编码
                df_head = pd.DataFrame(df.columns)
                filelist.append(file)
                df_comp1 = pd.DataFrame(df_head)
                df_comp = pd.concat([df_comp, df_comp1], axis=1)
    ####dataframe读完是一列一列的
        df_comp = pd.DataFrame(df_comp.values.T, index=df_comp.columns, columns=df_comp.index)
        df_comp = df_comp.reset_index(drop=True)  ####dataframe重新索引,不然下面无法和文件列表列合并,出现错误
        df_filename = pd.Series(filelist)
        df_comp = pd.concat([df_filename,df_comp],axis =1)
        print(df_comp)
        return  df_comp
    
    
    def write_csv(filename,df_comp):
        try:
            df_comp.to_csv(filename)
        except UnicodeEncodeError:
            print("编码错误, 该数据无法写到文件中, 直接忽略该数据")
    
    
    
    if __name__ == "__main__":
        filename = '../concat.csv'
        df_comp = readcsv('./')  ##目录根据需要自己改
        write_csv(filename,df_comp)  ##没有写自动生成文件和校验
    
    #想要的结果是这样的
                       0    0     1    2       3       4
    0              1.csv   id  name  NaN     NaN     NaN
    1              2.csv  id2  name  NaN     NaN     NaN
    2              3.csv   NM    XH   MC  SJGXSJ  SJSCSJ
    

    相关文章

      网友评论

          本文标题:python读取csv写入csv

          本文链接:https://www.haomeiwen.com/subject/loragctx.html