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?

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.


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.


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"])


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)

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")


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")

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


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)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.