#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. редактировать: моя глупая ошибка, большое вам спасибо за помощь!