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"]
我必须使用每个观察包含多行的数据集。每个观察的行数可以变化。该文件的结构使得信息不会重复。
文件包含段 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"]