Вы получаете однострочный фрейм данных, потому что конструктор фреймов данных находится в 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)