正在清理数据集,其中每个记录都被视为一个表



我有一个近800k行的数据集。应该只有大约6k个具有多列数据的不同记录。问题是,每个记录都被视为一个表。例如:

header            data
id                     238
name           machine_one
serial             1234556
purchase_date   11/19/2010
status                good
id                     239
name           machine_two
serial             3456789
purchase_date   11/19/2020
status                 bad
id                     240
name           machine_six
serial             1122334
purchase_date   11/19/2019
status                fair

注:每条记录包含不同数量的数据点。我用五个作为例子,但有些有30个,有些有12个,以此类推;NEWRECORD***";表示新条目的行。

我把它清理了一些,它都是一根没有结构的绳子。交叉表会是我想要的吗?非常感谢任何提示。

给定以上数据:

import pandas as pd
data=[{'header': 'id', 'data': '238'},
{'header': 'name', 'data': 'machine_one'},
{'header': 'serial', 'data': '1234556'},
{'header': 'purchase_date', 'data': '11/19/2010'},
{'header': 'status', 'data': 'good'},
{'header': 'id', 'data': '239'},
{'header': 'name', 'data': 'machine_two'},
{'header': 'serial', 'data': '3456789'},
{'header': 'purchase_date', 'data': '11/19/2020'},
{'header': 'status', 'data': 'bad'},
{'header': 'id', 'data': '240'},
{'header': 'name', 'data': 'machine_six'},
{'header': 'serial', 'data': '1122334'},
{'header': 'purchase_date', 'data': '11/19/2019'},
{'header': 'status', 'data': 'fair'}]
df = pd.DataFrame(data)

你能假设每条记录是5行吗?如果是,那么你可以这样做:

## create record index column
record = pd.DataFrame(pd.Series(range(len(df)//5)).repeat(5)).reset_index(drop=True)
## concatenate it horizontally to your file:
df = pd.concat([df, record], axis=1).rename(columns={0:'record'})
### pivot the result and cleanup index headings:
df = df.pivot(columns='header', index='record').copy().reset_index(drop=True)
df.columns = df.columns.get_level_values(1)
df.columns.name = None
print(df)

输出:

id  name    purchase_date   serial  status
0   238 machine_one 11/19/2010  1234556 good
1   239 machine_two 11/19/2020  3456789 bad
2   240 machine_six 11/19/2019  1122334 fair

相关内容

  • 没有找到相关文章

最新更新