Tải dữ liệu từ txt với gấu trúc


159

Tôi đang tải một tệp txt chứa một hỗn hợp dữ liệu float và chuỗi. Tôi muốn lưu trữ chúng trong một mảng nơi tôi có thể truy cập từng phần tử. Bây giờ tôi chỉ đang làm

import pandas as pd

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

Đây là cấu trúc của tệp đầu vào: 1 0 2000.0 70.2836942112 1347.28369421 /file_address.txt .

Bây giờ dữ liệu được nhập dưới dạng một cột duy nhất. Làm thế nào tôi có thể chia nó, để lưu trữ các yếu tố khác nhau (để tôi có thể gọi data[i,j])? Và làm thế nào tôi có thể xác định một tiêu đề?

Câu trả lời:


217

Bạn có thể dùng:

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

Thêm sep=" "vào mã của bạn, để lại một khoảng trống giữa các dấu ngoặc kép. Vì vậy, gấu trúc có thể phát hiện khoảng trắng giữa các giá trị và sắp xếp trong các cột. Cột dữ liệu là để đặt tên cột của bạn.


Cảm ơn! Làm thế nào tôi có thể truy cập một yếu tố của bảng?
albus_c

nếu bạn muốn gọi một cột, hãy sử dụng data.a nếu bạn đặt tên cho cột là "a".
pietrovismara

1
Hoặc nếu bạn muốn gọi một hàng đơn, bạn có thể sử dụng data.a [1] (ví dụ này gọi hàng đầu tiên của cột)
pietrovismara

Tuyệt quá! Điều đó đã cố định mọi thứ
albus_c

87

Tôi muốn thêm vào các câu trả lời ở trên, bạn có thể trực tiếp sử dụng

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

fwf là viết tắt của các dòng định dạng chiều rộng cố định.


38

Giải pháp của @ Pietrovismara là chính xác nhưng tôi chỉ muốn thêm: thay vì có một dòng riêng để thêm tên cột, có thể thực hiện việc này từ pd.read_csv.

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


13

Nếu bạn không có chỉ mục được gán cho dữ liệu và bạn không chắc khoảng cách là gì, bạn có thể sử dụng để cho gấu trúc chỉ định một chỉ mục và tìm kiếm nhiều khoảng trắng.

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)

3
Tương tự, bạn có thể chỉ định đối số dài dòng hơn delim_whitespace=Truethay vì '\s+'dấu phân cách
ALollz

8

Bạn có thể làm như:

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

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


6

Dựa trên những thay đổi mới nhất trong gấu trúc, bạn có thể sử dụng, read_csv, read_table không được dùng nữa:

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

4

Bạn có thể nhập tệp văn bản bằng lệnh read_table như vậy:

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

Tiền xử lý sẽ cần phải được thực hiện sau khi tải


1

Tôi thường xem dữ liệu trước hoặc chỉ thử nhập dữ liệu và thực hiện data.head (), nếu bạn thấy rằng các cột được phân tách bằng \ t thì bạn nên chỉ định sep="\t"khác , sep = " ".

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.