python读取csv写入csv

背景:工作需要从大量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)