Memuat data dari txt dengan panda

159

Saya memuat file txt yang berisi gabungan antara data float dan string. Saya ingin menyimpannya dalam sebuah array di mana saya dapat mengakses setiap elemen. Sekarang saya hanya melakukan

import pandas as pd

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

Ini adalah struktur file input: 1 0 2000.0 70.2836942112 1347.28369421 /file_address.txt .

Sekarang data diimpor sebagai kolom unik. Bagaimana saya bisa membaginya, sehingga untuk menyimpan elemen yang berbeda secara terpisah (jadi saya bisa menelepon data[i,j])? Dan bagaimana saya bisa mendefinisikan header?

albus_c
sumber

Jawaban:

217

Kamu bisa memakai:

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

Tambahkan sep=" "kode Anda, sisakan ruang kosong di antara tanda kutip. Jadi panda dapat mendeteksi spasi antara nilai dan mengurutkan dalam kolom. Kolom data adalah untuk memberi nama kolom Anda.

pietrovismara
sumber
Terima kasih! Bagaimana saya bisa mengakses elemen tabel?
albus_c
jika Anda ingin memanggil kolom gunakan data.a jika Anda memberi nama kolom "a".
pietrovismara
1
Atau jika Anda ingin memanggil satu baris, Anda dapat menggunakan data.a [1] (contoh ini memanggil baris pertama kolom)
pietrovismara
Bagus! Itu memperbaiki segalanya
albus_c
87

Saya ingin menambahkan jawaban di atas, Anda dapat langsung menggunakan

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

fwf adalah singkatan dari garis berformat lebar tetap.

Meenakshi Ravisankar
sumber
38

@ Pietrovismara solusi sudah benar tetapi saya hanya ingin menambahkan: daripada memiliki baris terpisah untuk menambahkan nama kolom, dimungkinkan untuk melakukan ini dari pd.read_csv.

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

Anda bisa menggunakan ini

import pandas as pd
dataset=pd.read_csv("filepath.txt",delimiter="\t")
ramakrishnareddy
sumber
Seperti yang Anda lihat dari jawaban ini, 'sep' dan 'delimeter' adalah sama :) stackoverflow.com/a/49533103
Давид Шико
13

Jika Anda tidak memiliki indeks yang ditetapkan untuk data dan Anda tidak yakin apa jaraknya, Anda dapat menggunakan untuk membiarkan panda menetapkan indeks dan mencari beberapa spasi.

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)
bfree67
sumber
3
Setara Anda dapat menentukan argumen yang lebih bertele-tele delim_whitespace=Truedaripada '\s+'pembatas
ALollz
8

Anda dapat melakukannya sebagai:

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

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

tulsi kumar
sumber
6

Berdasarkan perubahan terbaru dalam panda, Anda dapat menggunakan, read_csv, read_table sudah usang:

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

Anda dapat mengimpor file teks menggunakan perintah read_table seperti:

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

Pra-pemrosesan perlu dilakukan setelah memuat

Kaustubh J
sumber
1

Saya biasanya melihat data terlebih dahulu atau hanya mencoba mengimpornya dan melakukan data.head (), jika Anda melihat bahwa kolom dipisahkan dengan \ t maka Anda harus menentukan sep="\t"sebaliknya sep = " ",.

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