2016-08-09 2 views
0

Мне нужно работать с набором данных, который содержит несколько строк для каждого наблюдения. Количество строк на каждое наблюдение может меняться. Файл структурирован так, что информация не повторяется.Python: чтение файла данных с переменным числом строк на наблюдение

Файл содержит идентификатор сегмента, который связывает вывод с определенной частью информации. Вот пример макета файла.

Сегмент Id определений

SegementID Table     Number of Occurrences 
1   Customer Information 1 
3   Items bought   1-10 

сервировки стола - Информация о клиенте

ID Name 

сервировки стола - Купленные

Item Cost Date 

Вот пример того, как выходной файл будет выглядеть.

SegementID   
1 100  matt 
3 ball 3.25 1/16/2016 
3 cat  5.55 1/17/2016 
1 200  lucy 
3 doll 500.35 2/1/2016 
3 ball 3.25 2/2/2016 
3 dog  5.55 2/3/2016 

Обратите внимание, что идентификатор сегмента = 1 относится к информации о клиенте. Затем идентификатор сегмента 3 показывает все транзакции, выполненные клиентом.

Я хотел бы создать структуру с идентификатором клиента, доступным на каждой строке транзакции. Каков наилучший способ сделать это?

ID Item Cost Date 
100 ball 3.25 1/16/2016 
100 cat  5.55 1/17/2016 
200 doll 500.35 2/1/2016 
200 cat  3.25 2/2/2016 
200 dog  5.55 2/3/2016 
+0

К «сделать структуру» вы имеете в виду написание другой файл с этой структурой? Каковы ваши критерии, чтобы судить «лучший способ»? –

+0

Я имел в виду структуру данных (pandas), но также работал бы объект или словарь. К лучшему, я имею в виду самый чистый код. – CompChemist

ответ

1

Вот быстрое решение с использованием Pandas

import pandas as pd 

df = pd.DataFrame() 

with open("file.txt", "r") as f: 
    f.next() 
    for row,line in enumerate(f): 
     info = line.split() 
     if info[0] == '1': 
      client = info[1] 
     else: 
      df[row] = [client, info[1],info[2],info[3]] 

df = df.transpose() 
df.columns = ["ID","Item","Cost","Date"] 
Смежные вопросы