โหลดข้อมูลจาก txt ด้วยนุ่น


159

ฉันกำลังโหลดไฟล์ txt มีการผสมผสานระหว่างข้อมูลลอยและสตริง ฉันต้องการเก็บไว้ในอาร์เรย์ที่ฉันสามารถเข้าถึงแต่ละองค์ประกอบ ตอนนี้ฉันกำลังทำ

import pandas as pd

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

1 0 2000.0 70.2836942112 1347.28369421 /file_address.txtนี่คือโครงสร้างของแฟ้มใส่ไปนี้:

ตอนนี้ข้อมูลจะถูกนำเข้าเป็นคอลัมน์ที่ไม่ซ้ำกัน ฉันจะแบ่งมันได้อย่างไรเพื่อเก็บองค์ประกอบต่าง ๆ แยกกัน (เพื่อที่ฉันจะได้โทรหาdata[i,j]) และฉันจะกำหนดส่วนหัวได้อย่างไร

คำตอบ:


217

คุณสามารถใช้ได้:

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

เพิ่มsep=" "ในรหัสของคุณเว้นช่องว่างระหว่างคำพูด ดังนั้นแพนด้าสามารถตรวจจับช่องว่างระหว่างค่าและเรียงลำดับในคอลัมน์ คอลัมน์ข้อมูลใช้สำหรับตั้งชื่อคอลัมน์ของคุณ


ขอบคุณ! ฉันจะเข้าถึงองค์ประกอบของตารางได้อย่างไร
albus_c

ถ้าคุณต้องการเรียกใช้คอลัมน์ data.a ถ้าคุณตั้งชื่อคอลัมน์ "a"
pietrovismara

1
หรือถ้าคุณต้องการเรียกแถวเดียวคุณสามารถใช้ data.a [1] (ตัวอย่างนี้เรียกแถวแรกของคอลัมน์)
pietrovismara

ที่ดี! นั่นแก้ไขทุกอย่าง
albus_c

87

ฉันต้องการเพิ่มคำตอบข้างต้นคุณสามารถใช้โดยตรง

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

fwf ย่อมาจากบรรทัดที่จัดรูปแบบความกว้างคงที่


38

@ วิธีแก้ปัญหาของ Pietrovismara ถูกต้อง แต่ฉันต้องการเพิ่ม: แทนที่จะมีบรรทัดแยกต่างหากเพื่อเพิ่มชื่อคอลัมน์คุณสามารถทำได้จาก pd.read_csv

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


13

หากคุณไม่มีดัชนีที่กำหนดให้กับข้อมูลและคุณไม่แน่ใจว่าระยะห่างคืออะไรคุณสามารถใช้เพื่อให้แพนด้ากำหนดดัชนีและมองหาช่องว่างหลาย ๆ ช่อง

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

3
เท่ากับคุณสามารถระบุอาร์กิวเมนต์ verbose เพิ่มเติมdelim_whitespace=Trueแทน'\s+'ตัวคั่น
ALollz

8

คุณสามารถทำได้ดังนี้:

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

(เช่น, df = pd.read_csv ('F: \ Desktop \ ds \ text.txt', ตัวคั่น = "\ t")


6

ขึ้นอยู่กับการเปลี่ยนแปลงล่าสุดในนุ่นคุณสามารถใช้ read_csv, read_table เลิกใช้แล้ว:

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

4

คุณสามารถนำเข้าไฟล์ข้อความโดยใช้คำสั่ง read_table ดังนี้:

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

การประมวลผลล่วงหน้าจะต้องทำหลังจากโหลด


1

ผมมักจะใช้เวลาดูที่ข้อมูลเป็นครั้งแรกหรือเพียงแค่พยายามที่จะนำมันและทำ data.head () ถ้าคุณเห็นว่าคอลัมน์ที่จะถูกแยกออกด้วย \ t แล้วคุณควรจะระบุเป็นอย่างอื่นsep="\t"sep = " "

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.