Eu tenho um quadro de dados em pandas que gostaria de gravar em um arquivo CSV. Estou fazendo isso usando:
df.to_csv('out.csv')
E recebendo o erro:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u03b1' in position 20: ordinal not in range(128)
Existe alguma maneira de contornar isso facilmente (ou seja, eu tenho caracteres unicode no meu quadro de dados)? E existe uma maneira de gravar em um arquivo delimitado por tabulação em vez de um CSV usando, por exemplo, um método 'to-tab' (que eu acho que não existe)?
index=False
para soltar o índice.Quando você está armazenando um
DataFrame
objeto em um arquivo csv usando oto_csv
método, provavelmente não precisará armazenar os índices anteriores de cada linha doDataFrame
objeto.Você pode evitar isso passando um
False
valor booleano para oindex
parâmetroUm pouco como:
Portanto, se seu objeto DataFrame é algo como:
O arquivo csv armazenará:
em vez de (o caso em que o valor padrão
True
foi passado)fonte
df.rename_axis('index_name')
? que não altera o arquivo em siPara gravar um DataFrame do pandas em um arquivo CSV, você precisará
DataFrame.to_csv
. Essa função oferece muitos argumentos com padrões razoáveis que você precisará substituir com mais freqüência do que o seu caso de uso específico. Por exemplo, convém usar um separador diferente, alterar o formato de data e hora ou soltar o índice ao escrever.to_csv
possui argumentos que você pode passar para atender a esses requisitos.Aqui está uma tabela listando alguns cenários comuns de gravação em arquivos CSV e os argumentos correspondentes que você pode usar para eles.
fonte
Outra coisa que você pode tentar se estiver com problemas de codificação para 'utf-8' e quiser ir célula por célula, tente o seguinte.
Python 2
(Onde "df" é seu objeto DataFrame.)
Então tente:
Você pode verificar a codificação das colunas:
Aviso: erros = 'ignorar' apenas omitirá o caracter, por exemplo
Python 3
fonte
Às vezes, você enfrenta esses problemas se especificar também a codificação UTF-8. Eu recomendo que você especifique a codificação durante a leitura do arquivo e a mesma codificação durante a gravação no arquivo. Isso pode resolver seu problema.
fonte
Exemplo de exportação em arquivo com caminho completo no Windows e caso seu arquivo tenha cabeçalhos :
Exemplo se você deseja armazenar na pasta no mesmo diretório em que seu script está, com a codificação utf-8 e a guia como separador :
fonte
poderia não ser a resposta para este caso, mas como eu tinha a mesma mensagem de erro com
.to_csv
eu tentei.toCSV('name.csv')
e a mensagem de erro era diferente ("SparseDataFrame' object has no attribute 'toCSV'
). Portanto, o problema foi resolvido transformando o dataframe em um denso dataframefonte
.toCSV
e não.to_csv
. Você esqueceu o sublinhado