Gostaria de ler em um arquivo csv. Infelizmente, isso é criado por um software com bugs: Minha linha de cabeçalho contém vários separadores ";" e ",". O que não seria um problema se meu conjunto de dados não tivesse um decimal ",".
Gostaria de ler os arquivos automaticamente sem alterar o cabeçalho manualmente, mas não encontrei nada de acordo com a documentação do Pandas.
Os dados de exemplo:
some file header row number 1
some file header row number two
some more information about data in that file
column1;column2;column3,column4,column5
1,234;2,665;0,888;3,891;3,762
2,232;1,233;0,888;3,789;3,524
Posso especificar um separador diferente para o cabeçalho do que para o próprio conjunto de dados? Meu código:
df = pd.read_csv(
"mypath\test.csv",
skiprows = 3;header= 0, delimiter=';,', decimal = ",")
o que resulta na leitura de tudo em uma coluna
column1;column2;column3,column4,column5
0 1,234;2,665;0,888;3,891;3,762
1 2,232;1,233;0,888;3,789;3,524
Mas o resultado deve ser cinco colunas:
column1 column2 column3 column4 column5
0 1.234 2.665 0.888 3.891 3.762
1 2.232 1.233 0.888 3.789 3.524
Supondo que seus cabeçalhos comecem com uma letra de
[A-Za-z]
você pode passar uma regex com um lookahead positivo para a opção vírgulasep
dentropd.read_csv
:Saída:
Explicação de Regex . Ou use:
r';|,(?=[^\d])'
(não seguido por um dígito).É claro que você pode ajustar a regex se precisar de uma solução mais rigorosa para garantir que a opção para a vírgula não corresponda às linhas subsequentes.
Edição: para esclarecer, o equivalente para o caminho do seu arquivo é:
Não :
que gera o erro mencionado no comentário :