Carregar dados do txt com pandas

159

Estou carregando um arquivo txt contendo uma mistura de dados flutuantes e de string. Eu quero armazená-los em uma matriz onde eu possa acessar cada elemento. Agora estou apenas fazendo

import pandas as pd

data = pd.read_csv('output_list.txt', header = None)
print data

Esta é a estrutura do arquivo de entrada: 1 0 2000.0 70.2836942112 1347.28369421 /file_address.txt.

Agora os dados são importados como uma coluna exclusiva. Como posso dividi-lo, para armazenar diferentes elementos separadamente (para que eu possa ligar data[i,j])? E como posso definir um cabeçalho?

albus_c
fonte

Respostas:

217

Você pode usar:

data = pd.read_csv('output_list.txt', sep=" ", header=None)
data.columns = ["a", "b", "c", "etc."]

Adicione sep=" "seu código, deixando um espaço em branco entre as aspas. Assim, os pandas podem detectar espaços entre valores e classificar em colunas. As colunas de dados são para nomear suas colunas.

pietrovismara
fonte
Obrigado! Como posso acessar um elemento da tabela?
Albus_c
se você quiser chamar uma coluna, use data.a se você nomeou a coluna "a".
Pietrovismara 04/02
1
Ou se você quiser chamar uma única linha que você pode usar data.a [1] (este exemplo chama a primeira linha da coluna)
pietrovismara
Ótimo! Isso consertou tudo #
24414 albus_c
87

Gostaria de adicionar às respostas acima, você pode usar diretamente

df = pd.read_fwf('output_list.txt')

fwf significa linhas formatadas em largura fixa.

Meenakshi Ravisankar
fonte
38

A solução do @ Pietrovismara está correta, mas eu gostaria de adicionar: em vez de ter uma linha separada para adicionar nomes de colunas, é possível fazer isso em pd.read_csv.

df = pd.read_csv('output_list.txt', sep=" ", header=None, names=["a", "b", "c"])
Sam Perry
fonte
26

você pode usar isso

import pandas as pd
dataset=pd.read_csv("filepath.txt",delimiter="\t")
ramakrishnareddy
fonte
Como você pode ver nesta resposta, 'sep' e 'delimeter' são os mesmos :) stackoverflow.com/a/49533103
Давид Шико
13

Se você não tiver um índice atribuído aos dados e não tiver certeza de qual é o espaçamento, poderá usar para permitir que os pandas atribuam um índice e procurem vários espaços.

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)
bfree67
fonte
3
Equivalentemente você pode especificar o argumento mais detalhado delim_whitespace=Trueem vez do '\s+'delimitador
ALollz
8

Você pode fazer o seguinte:

import pandas as pd
df = pd.read_csv('file_location\filename.txt', delimiter = "\t")

(como, df = pd.read_csv ('F: \ Desktop \ ds \ text.txt', delimitador = "\ t")

tulsi kumar
fonte
6

Com base nas alterações mais recentes dos pandas, você pode usar, read_csv, read_table está obsoleto:

import pandas as pd
pd.read_csv("file.txt", sep = "\t")
pari
fonte
5

Você pode importar o arquivo de texto usando o comando read_table da seguinte maneira:

import pandas as pd
df=pd.read_table('output_list.txt',header=None)

O pré-processamento precisará ser feito após o carregamento

Kaustubh J
fonte
1

Normalmente, primeiro dou uma olhada nos dados ou apenas tento importá-los e fazer data.head (), se você vir que as colunas estão separadas por \ t, deverá especificar o sep="\t"contrário sep = " ",.

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
Mohamed Berrimi
fonte