Завантажте дані з 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
Можна також вказати більш багатослівний аргумент 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 (), якщо ви бачите , що стовпці розділені \ т , то ви повинні вказати в sep="\t"іншому випадку sep = " ".

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.