Загрузить данные из 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])? И как я могу определить заголовок?

albus_c
источник

Ответы:

217

Ты можешь использовать:

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

Добавьте sep=" "в свой код, оставляя пустое пространство между кавычками. Таким образом, панды могут обнаруживать пробелы между значениями и сортировать по столбцам. Столбцы данных предназначены для именования ваших столбцов.

pietrovismara
источник
Спасибо! Как я могу получить доступ к элементу таблицы?
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"])
Сэм Перри
источник
26

Вы можете использовать это

import pandas as pd
dataset=pd.read_csv("filepath.txt",delimiter="\t")
ramakrishnareddy
источник
Как видно из этого ответа, «sep» и «delimeter» - это одно и то же :) stackoverflow.com/a/49533103
Давид Шико
13

Если у вас нет индекса, назначенного для данных, и вы не уверены, что такое интервал, вы можете использовать, чтобы панды могли назначить индекс и искать несколько пробелов.

df = pd.read_csv('filename.txt', delimiter= '\s+', index_col=False)
bfree67
источник
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")
Pari
источник
5

Вы можете импортировать текстовый файл с помощью команды read_table следующим образом:

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

Предварительная обработка должна быть выполнена после загрузки

Kaustubh J
источник
1

Я обычно взглянуть на данные первой или просто попытаться импортировать его и сделать data.head (), если вы видите , что столбцы разделены \ т , то вы должны указать в sep="\t"противном случае sep = " ".

import pandas as pd     
data = pd.read_csv('data.txt', sep=" ", header=None)
Мохамед Беррими
источник