Прочитать из текстового файла и преобразовать в фрейм данных в python

У меня есть текстовый файл следующего вида:

sub_ID: ['sub-01','sub-02']
ses_ID: ['ses-01','ses-01']
среднее значение: [0,3456,0,446]

Я хочу прочитать это и преобразовать его в фрейм данных, такой как на изображении - не обращайте внимания на значения в столбце mean_e_field, это просто пример. значения должны быть такими же, как в текстовом файле. желаемый датафрейм

Я попробовал это и получил это, однако я не могу преобразовать его в свой предпочтительный df: dataframe data = pd.read_csv(filename, sep = ",", header=None) data

Я ценю ваши ответы заранее.

Вы сказали, что пытались использовать read_csv, но данные примера, которые вы предоставили, не в формате csv (на самом деле это похоже на YAML). Представлены ли ваши данные в указанном выше формате, т. е. по одной строке на столбец и список значений?

filpa 10.01.2023 17:05

Да, мои данные представляют собой текстовый файл, в котором каждый список находится в отдельной строке. Я хочу преобразовать его в фрейм данных, где первый элемент — это имя столбца, а остальные — значения строки. и с read_csv в pandas я мог бы автоматически преобразовать свой текстовый файл в фрейм данных, но фрейм данных, который я хочу, отличается от того, что я получил.

gulo1221 10.01.2023 17:11
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
1
2
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, несколько вещей здесь.

Причина, по которой ваш предыдущий data = pd.read_csv(filename, sep = ",", header=None) не работал, заключается в том, что вы указали, что он должен разделяться на ,, и он обрабатывает каждую строку как строку, которую нужно разделить. Итак, sub_ID: [ 'sub-01','sub-02' ] делится на sub_ID: ['sub-01' и 'sub-02' ].

Данные примера, которые вы предоставили, похоже, представлены в формате YAML:

sub_ID: [ 'sub-01','sub-02' ]

ses_ID: [ 'ses-01','ses-01' ]

mean: [ 0.3456,0.446 ]

Если бы это был CSV, данные выглядели бы следующим образом (это не так):

sub_ID,ses_ID,mean
sub-01,ses-01,0.3456
sub-02,ses-02,0.445

Чтобы прочитать эти данные в фрейме данных, вам нужно либо предварительно обработать их в другом формате (например, csv), либо прочитать их как YAML в dict и передать это pandas.DataFrame.

Например:

import yaml
with open("data.txt", "r") as file:
    try:
        # This returns a dict from the given YAML data.
        data = yaml.safe_load(file)
    except yaml.YAMLError as exc:
        print(exc)

print(data)
# {'sub_ID': ['sub-01', 'sub-02'], 'ses_ID': ['ses-01', 'ses-01'], 'mean': [0.3456, 0.446]}

После этого вы можете создать DataFrame из этого dict:

df = pd.DataFrame(data)
df.head()


+-----+--------+--------+--------+
|     | sub_ID | ses_ID |  mean  |
+-----+--------+--------+--------+
|   0 | sub-01 | ses-01 | 0.3456 |
|   1 | sub-02 | ses-02 |  0.446 |
+-----+--------+--------+--------+

По желанию.

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

Другие вопросы по теме