如何转换我的csv文件中的所有列?

时间:2018-12-02 20:07:34

标签: python pandas csv

我问过从excel文件(How can I convert all columns from my Excel file using pandas)转换所有列的方法。答案是极好的!但我需要更改为csv文件。我阅读了有关csv文件的熊猫文档,并且read_csv方法与read_excel非常相似。但是,转换器参数不起作用。有人知道为什么吗? 我想做同样的事情,使用转换器指示数据类型。

import numpy as np
import pandas as pd

#path from excel file, in pandas.read_excel this attribute is fileName
fileName = 'C:\\Users\\Tito\\Desktop\\banco_gal.csv'
#header to excel file
nameCols = ["Requisicao", "Municipio_do_Solicitante", "Estado_do_Solicitante", "Data_da_Solicitação", "Data_dos_primeiros_Sintomas", "Observacao", "Febre", "Exantema", "Artralgia", "Cefaleia", "Dor_Retrorbitaria", "Calafrio", "Edema", "Mialgia", "Astenia", "Hiperemia_Conjutival", "Prostracao", "Prurido", "Nausea", "Diarreia", "Lombalgia", "Vomito", "Hiporexia", "Dor_abdominal", "Dificuldade_Deglutir", "Adinamia", "Fotofobia", "Coriza", "febre_Alta", "Data_Notificacao_Sinan", "Data_Notificação_Gal", "Paciente", "Data_de_Nascimento", "Idade", "Tipo_Idade", "Sexo", "Idade_Gestacional", "Microcefalia", "Complicacoes_Neurologicas", "Endereco", "Bairro", "CEP_da_Residencia", "Municipio_da_Residencia", "IBGE_Município_da_Residencia", "Estado_da_Residencia", "x", "Exame", "Metodologia", "Data_de_Cadastro", "Material_Biologico", "Data_da_Coleta", "Data_do_Encaminhamento", "Data_do_Recebimento", "Data_Inicio_do_Processamento", "Data_do_Processamento", "Data_da_Liberacao", "Status_Exame", "Resultado", "Caso", "Tempo_de_Coleta"]

#deffining the types of each column
strcols = {c: str for c in [0, 5, 31, 36, 37, 38, 39, 40, 41, 45]}
datecols = {c: pd.to_datetime for c in [3, 4, 29, 30, 32, 48, 50, 51, 52, 53, 54, 55]}
intcols = {c: np.int for c in [33, 43, 59]}
booleancols = {c: np.bool for c in range(6, 28)}
conv_fcts = {**strcols, **datecols, **intcols, **booleancols}

#creating a dataframe
df = pd.read_csv(fileName, names=nameCols, converters=conv_fcts, true_values=['s'], false_values=['n'])
#this method writes in a file some information
with open('C:\\Users\\Tito\\gal\\agrupamento.txt', 'w') as agrupador:
    print('metodologia', file=agrupador)
    print(df.Metodologia.unique(), file=agrupador)
    print('material', file=agrupador)
    print(df.Material_Biologico.unique(), file=agrupador)
    for nome in nameCols:
        print(nome + " tem " + str(df[nome].isna().sum()) + " vazias", file=agrupador)

0 个答案:

没有答案