Załaduj dane z txt za pomocą pand

159

Ładuję plik txt zawierający mieszankę danych typu float i string. Chcę przechowywać je w tablicy, w której mam dostęp do każdego elementu. Teraz po prostu robię

import pandas as pd

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

Jest to struktura pliku wejściowego: 1 0 2000.0 70.2836942112 1347.28369421 /file_address.txt.

Teraz dane są importowane jako unikalna kolumna. Jak mogę to podzielić, żeby osobno przechowywać różne elementy (abym mógł wywołać data[i,j])? Jak mogę zdefiniować nagłówek?

albus_c
źródło

Odpowiedzi:

217

Możesz użyć:

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

Dodaj sep=" "swój kod, pozostawiając puste miejsce między cudzysłowami. Dzięki temu pandy mogą wykrywać spacje między wartościami i sortować w kolumnach. Kolumny danych służą do nazywania kolumn.

pietrovismara
źródło
Dzięki! Jak mogę uzyskać dostęp do elementu tabeli?
albus_c
jeśli chcesz wywołać kolumnę, użyj data.a, jeśli nazwiesz kolumnę „a”.
pietrovismara
1
Lub jeśli chcesz zadzwonić jeden wiersz można użyć data.a [1] (w tym przykładzie zwraca pierwszy wiersz kolumny)
pietrovismara
Wspaniały! To naprawiło wszystko
albus_c
87

Chciałbym dodać do powyższych odpowiedzi, które możesz bezpośrednio użyć

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

fwf oznacza linie sformatowane o stałej szerokości.

Meenakshi Ravisankar
źródło
38

Rozwiązanie @ Pietrovismara jest poprawne, ale chciałbym tylko dodać: zamiast mieć osobną linię do dodawania nazw kolumn, można to zrobić z pd.read_csv.

df = pd.read_csv('output_list.txt', sep=" ", header=None, names=["a", "b", "c"])
Sam Perry
źródło
26

możesz tego użyć

import pandas as pd
dataset=pd.read_csv("filepath.txt",delimiter="\t")
ramakrishnareddy
źródło
Jak widać z tej odpowiedzi, „sep” i „delimeter” to to samo :) stackoverflow.com/a/49533103
Давид Шико
13

Jeśli nie masz przypisanego indeksu do danych i nie masz pewności, jakie są odstępy, możesz użyć, aby pozwolić pandom przypisać indeks i szukać wielu spacji.

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)
bfree67
źródło
3
Równoważnie możesz określić bardziej szczegółowy argument delim_whitespace=Truezamiast '\s+'separatora
ALollz
8

Możesz robić jako:

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

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

tulsi kumar
źródło
6

W oparciu o najnowsze zmiany w pandach możesz użyć read_csv, read_table jest przestarzałe:

import pandas as pd
pd.read_csv("file.txt", sep = "\t")
pari
źródło
4

Możesz zaimportować plik tekstowy za pomocą polecenia read_table w następujący sposób:

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

Wstępne przetwarzanie będzie musiało zostać wykonane po załadowaniu

Kaustubh J
źródło
1

Ja zwykle spojrzeć na pierwsze dane lub po prostu spróbować go importować i zrobić data.head (), jeśli widzisz, że kolumny są oddzielone \ t to należy określić sep="\t"inaczej sep = " ".

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
Mohamed Berrimi
źródło