Python DataFrame, используя небольшой раздел из большого текстового файла - PullRequest
1 голос
/ 29 апреля 2020

Вот мой код:

import pandas as pd

with open("input.txt") as f:
    data = f.readlines()
    for line in data:
        data = {'col1': [line[':']], 'col2': [line[':']], 'col3': [line[':']], 'col4': [line[':']]}
        df = pd.DataFrame(data)
        print(df)

Проблема в том, что я продолжаю возвращать отдельный кадр данных строки для каждой отдельной строки текстового файла. Мне нужно иметь полный кадр данных со всеми строками вместе. Сам текстовый файл не отформатирован. Поэтому трудно понять, как я должен это сделать. Любые идеи?

1 Ответ

0 голосов
/ 30 апреля 2020

Вы получаете однострочный фрейм данных, потому что конструктор фреймов данных находится в l oop, который проходит по каждой строке файла.

for line in data:
    data = ...
    df = pd.DataFrame(data)

Не ясно, какова ваша конечная цель здесь, но я бы посмотрел на различные варианты pandas.read_table. Например, если вам нужны только определенные столбцы, есть параметр usecols.

Другой вариант - это манипулирование данными в pandas после прочтения файла. Например, если вы хотите, чтобы столбец был копией столбца, вы можете использовать df['col2'] = df['col1']

Если вам определенно необходимо l oop для каждой строки файла, то создайте список диктовок. и сделайте фрейм данных в конце. Вы можете опустить readlines и выполнить итерацию непосредственно по f.

datadicts = []
with open("input.txt") as f:
    for line in f:
        datadicts.append({'col1': [line[':']], 'col2': [line[':']], 'col3': [line[':']], 'col4': [line[':']]})

df = pd.DataFrame(datadicts)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...