Pandas lidos na tabela sem cabeçalhos

239

Como posso ler em um arquivo .csv (sem cabeçalhos) e quando quero apenas um subconjunto de colunas (digamos 4 e 7 de um total de 20 colunas) usando pandas? Eu não consigo ser capaz de fazerusecols

user308827
fonte

Respostas:

351

Para ler um csv em que não tenha um cabeçalho e apenas para determinadas colunas, você precisa passar parâmetros header=Nonee usecols=[3,6]para a quarta e a sétima colunas:

df = pd.read_csv(file_path, header=None, usecols=[3,6])

Veja os documentos

EdChum
fonte
67

As respostas anteriores foram boas e corretas, mas, na minha opinião, um namesparâmetro extra o tornará perfeito e deve ser o caminho recomendado, especialmente quando o csv não possui headers.

Solução

Uso usecolse namesparâmetros

df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'])

Leitura adicional

ou use header=Nonepara informar explicitamente às pessoas que csvelas não têm cabeçalhos (de qualquer forma, as duas linhas são idênticas )

df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'], header=None)

Para que você possa recuperar seus dados,

# with `names` parameter
df['colA']
df['colB'] 

ao invés de

# without `names` parameter
df[0]
df[1]

Explicar

Com base em read_csv , quando namessão passados ​​explicitamente, headereles se comportam como em Nonevez de 0, para que você possa pular header=Nonequando namesexistir.

ch33hau
fonte
9

Certifique-se de especificar passe header=Nonee adicionar usecols=[3,6]para a quarta e a sétima colunas.

Alex
fonte