Нарезка файла DAT на фиксированную ширину, хранящуюся в Dict

#python #dataframe #slice

#python #фрейм данных #нарезать

Вопрос:

У меня возникли некоторые проблемы (пробовал это долгое время), и я все еще не мог найти решение самостоятельно. У меня есть файл dat, который выглядит следующим образом:

abc900800007.2

И у меня есть dict, который содержит имя столбца в качестве ключа и значения, соответствующие фиксированной ширине для файла DAT, мой dict выглядит как mydict = {‘col1’: 3, ‘col2’: 8, ‘col3’: 3) .

Что я хочу сделать, так это создать df, объединив оба элемента, таким образом, нарезая файл DAT через значение dict. df должен быть таким:

col1 col 2 col 3

abc 90080000 7.2

Любая помощь будет высоко оценена!

Комментарии:

1. всегда ли в mydict есть 3 элемента?

2. Да, есть только один dict с 3 элементами

Ответ №1:

Я думаю, что возможным (но в зависимости от размера файла, требующего много памяти) решением является:

 data = {'col1':[], 'col2':[], 'col3':[]}
for line in open('file.dat'):
    data['col1'].append(line[:mydict['col1']])
    begin = mydict['col1']
    end = begin   mydict['col2']
    data['col2'].append(line[begin:end])
    begin = end
    end = begin   mydict['col3'] 
    data['col3'].append(line[begin:end])
df = pd.DataFrame(data) # create the DataFrame
del data # delete the auxiliar data
  

Комментарии:

1. Спасибо за ответ, я только что попробовал ваше решение, но в результате я получаю, что каждый символ попадает в столбец 1 (например: a = строка 1, col1, b = строка 2 col1) вместо col1, чтобы быть abc

2. редактировать: моя глупая ошибка, большое вам спасибо за помощь!