Python:读取每个观察行数可变的数据文件

Python: Read Data file with variable number of rows per observation

我必须使用每个观察包含多行的数据集。每个观察的行数可以变化。该文件的结构使得信息不会重复。

文件包含段 ID,它将输出与特定信息片段相关联。这是文件布局的示例。

区段 ID 定义

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

Table布局-客户信息

ID  Name

Table 布局 - 购买的物品

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

注意段ID = 1,与客户信息相关。段 ID 3 然后显示客户进行的所有交易。

我想在每个交易行上提供具有客户 ID 的结构。最好的方法是什么?

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

这是一个使用 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"]