Загрузить данные из TXT с пандами


159

Я загружаю текстовый файл, содержащий смесь данных типа float и string. Я хочу хранить их в массиве, где я могу получить доступ к каждому элементу. Сейчас просто занимаюсь

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', delimiter = "\ t")


6

Основываясь на последних изменениях в пандах, вы можете использовать read_csv, read_table устарела:

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

5

Вы можете импортировать текстовый файл с помощью команды 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.