Laden Sie Daten von txt mit Pandas

159

Ich lade eine txt-Datei, die eine Mischung aus Float- und String-Daten enthält. Ich möchte sie in einem Array speichern, in dem ich auf jedes Element zugreifen kann. Jetzt mache ich es einfach

import pandas as pd

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

Dies ist die Struktur der Eingabedatei : 1 0 2000.0 70.2836942112 1347.28369421 /file_address.txt.

Jetzt werden die Daten als eindeutige Spalte importiert. Wie kann ich es teilen, um verschiedene Elemente separat zu speichern (damit ich aufrufen kann data[i,j])? Und wie kann ich einen Header definieren?

albus_c
quelle

Antworten:

217

Sie können verwenden:

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

Fügen Sie sep=" "Ihren Code hinzu und lassen Sie ein Leerzeichen zwischen den Anführungszeichen. So können Pandas Leerzeichen zwischen Werten erkennen und in Spalten sortieren. Datenspalten dienen zur Benennung Ihrer Spalten.

pietrovismara
quelle
Vielen Dank! Wie kann ich auf ein Element der Tabelle zugreifen?
albus_c
Wenn Sie eine Spalte aufrufen möchten, verwenden Sie data.a, wenn Sie die Spalte "a" genannt haben.
Pietrovismara
1
Oder wenn Sie eine einzelne Zeile aufrufen möchten, können Sie data.a [1] verwenden (in diesem Beispiel wird die erste Zeile der Spalte
aufgerufen
Toll! Das hat alles behoben
albus_c
87

Ich möchte zu den obigen Antworten hinzufügen, die Sie direkt verwenden können

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

fwf steht für formatierte Linien mit fester Breite.

Meenakshi Ravisankar
quelle
38

Die Lösung von @ Pietrovismara ist korrekt, aber ich möchte nur hinzufügen: Anstatt eine separate Zeile zum Hinzufügen von Spaltennamen zu haben, ist dies über pd.read_csv möglich.

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

Sie können dies verwenden

import pandas as pd
dataset=pd.read_csv("filepath.txt",delimiter="\t")
ramakrishnareddy
quelle
Wie Sie dieser Antwort entnehmen können, sind 'sep' und 'delimeter' identisch :) stackoverflow.com/a/49533103
3авид Шико
13

Wenn Sie den Daten keinen Index zugewiesen haben und sich nicht sicher sind, wie groß der Abstand ist, können Sie Pandas einen Index zuweisen lassen und nach mehreren Leerzeichen suchen.

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)
bfree67
quelle
3
Entsprechend können Sie das ausführlichere Argument delim_whitespace=Trueanstelle des '\s+'Trennzeichens
angeben
8

Sie können Folgendes tun:

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

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

Tulsi Kumar
quelle
6

Basierend auf den neuesten Änderungen in Pandas können Sie verwenden, read_csv, read_table ist veraltet:

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

Sie können die Textdatei mit dem Befehl read_table wie folgt importieren:

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

Die Vorverarbeitung muss nach dem Laden erfolgen

Kaustubh J.
quelle
1

Normalerweise schaue ich mir zuerst die Daten an oder versuche sie einfach zu importieren und data.head () auszuführen. Wenn Sie sehen, dass die Spalten durch \ t getrennt sind, sollten Sie etwas sep="\t"anderes angeben sep = " ".

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