Carica i dati da txt con i panda


159

Sto caricando un file txt contenente un mix di dati float e stringa. Voglio memorizzarli in un array in cui posso accedere a ciascun elemento. Ora sto solo facendo

import pandas as pd

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

Questa è la struttura del file di input: 1 0 2000.0 70.2836942112 1347.28369421 /file_address.txt.

Ora i dati vengono importati come una colonna unica. Come posso dividerlo, in modo da memorizzare separatamente diversi elementi (così posso chiamare data[i,j])? E come posso definire un'intestazione?

Risposte:


217

Puoi usare:

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

Aggiungi il sep=" "tuo codice, lasciando uno spazio vuoto tra le virgolette. Quindi i panda possono rilevare gli spazi tra i valori e ordinarli in colonne. Le colonne di dati servono per assegnare un nome alle colonne.


Grazie! Come posso accedere a un elemento della tabella?
albus_c,

se vuoi chiamare una colonna usa data.a se hai chiamato la colonna "a".
Pietrovismara,

1
O se vuoi chiamare una singola riga puoi usare data.a [1] (questo esempio chiama la prima riga della colonna)
pietrovismara

Grande! Ciò ha risolto tutto
albus_c il

87

Vorrei aggiungere le risposte sopra, è possibile utilizzare direttamente

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

fwf sta per linee formattate a larghezza fissa.


38

La soluzione di @ Pietrovismara è corretta ma vorrei solo aggiungere: piuttosto che avere una riga separata per aggiungere i nomi delle colonne, è possibile farlo da pd.read_csv.

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


13

Se non hai un indice assegnato ai dati e non sei sicuro di quale sia la spaziatura, puoi usare per consentire ai panda di assegnare un indice e cercare più spazi.

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)

3
Allo stesso modo è possibile specificare l'argomento più dettagliato delim_whitespace=Trueinvece del '\s+'delimitatore
ALollz,

8

Puoi fare come:

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

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


6

In base alle ultime modifiche in Panda, è possibile utilizzare, read_csv, read_table è obsoleto:

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

5

Puoi importare il file di testo usando il comando read_table in questo modo:

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

La preelaborazione dovrà essere eseguita dopo il caricamento


1

Di solito prendo uno sguardo ai dati prima o semplicemente tenta di importare e fare data.head (), se si vede che le colonne sono separate da \ t allora si dovrebbe specificare sep="\t"in caso contrario, sep = " ".

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.