Estou tentando ler no Pandas uma única coluna de um enorme arquivo CSV usando a resposta de outra pergunta :
import pandas as pd
test_df = pd.read_csv("test.csv", usecols=["id_str"], engine="pyarrow")
e obtenho este erro:
pyarrow.lib.ArrowInvalid: CSV parse error: Expected 4 columns, got 3
Usando um arquivo muito menor, posso lê-lo sem pd.read_csv
nenhuma opção.
Lendo em volta parece que esse problema está relacionado ao fato do arquivo CSV possuir células vazias, que são preenchidas NaN
quando pd.read_csv
usado sem opções, mas criam problemas no outro caso.
Ainda não encontrei nenhuma solução para esse problema, alguma sugestão?
Quero ler apenas algumas colunas, porque o arquivo é muito grande e preciso apenas delas para a análise que tenho que fazer.
Seu arquivo CSV está quebrado. Em algum lugar no arquivo, você tem um número incorreto de vírgulas... então há menos colunas do que o pandas esperaria. Você não pode reproduzir esse erro com um arquivo menor (diferente), porque esses dados menores (por exemplo, apenas as 100 primeiras linhas) estão formatados corretamente - portanto, seu código funciona. Em algum lugar abaixo do arquivo original, pelo menos uma linha não se parece com as linhas acima e isso causa o erro (apenas no arquivo original).
Não se trata de valores ausentes (por exemplo,
np.NaN
representado em csv como",,"
). Eles podem ser analisados. Trata-se do número incorreto de vírgulas seguidas.Suponha que você queira consertar o arquivo, você precisará encontrar a linha quebrada (e removê-la ou corrigir o conteúdo). Tente ler apenas um certo número de linhas (100, 500, 1000, ..) até encontrar o erro. Isso permitirá que você encontre a linha. Ou faça uma cópia do arquivo e exclua os 90% inferiores, os 80% inferiores, .. até que o erro apareça.