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?

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.


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.


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


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)

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


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

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


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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.