2 回答
TA贡献1869条经验 获得超4个赞
collections.OrderedDict用对象累加记录:
import pandas as pd
from collections import OrderedDict
with open('input.ind') as f:
records = []
for line in f:
name, val = line.strip().split(':')
if name == 'GROUP_FIELD_NAME':
if val == 'ID':
records.append(OrderedDict())
records[-1][val] = next(f).strip().split(':')[1]
else:
records[-1][name] = val
df = pd.DataFrame(records)
print(df)
预期输出:
ID NAME GROUP_OFFSET GROUP_LENGTH GROUP_FILENAME
0 1 Joe 0 1234 /tmp/something1
1 2 Jenny 1235 12 /tmp/something2
TA贡献1880条经验 获得超4个赞
如果要直接获取 Dataframe,建议使用read_csv,将sep参数设置为:.
现在,您应该有一个包含两列的 DataFrame:一列带有名称,另一列带有值。
然后,您可以使用例如groupby对行进行分组并对分组进行一些操作。一个“官方”的例子
>>> df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
... 'Parrot', 'Parrot'],
... 'Max Speed': [380., 370., 24., 26.]})
>>> df
Animal Max Speed
0 Falcon 380.0
1 Falcon 370.0
2 Parrot 24.0
3 Parrot 26.0
>>> df.groupby(['Animal']).mean()
Max Speed
Animal
Falcon 375.0
Parrot 25.0
最后,使用transpose,您可以获得最终的Dataframe。
添加回答
举报