我有一个很大的csv文件(100万+行),其中包含
行的数据s, p, o
4931958, type, CNV
4931958, sample_id, 683665
4931958, primary_Site, haematopoietic_and_lymphoid_tissue
4931958, site_subtype, NS
我的最终结果是将数据格式化为json,类似于
{
"name": 4931958,
"type": "CNV",
"sample_id": "683665",
"site_subtype": "NS"
}
我是使用常规python循环完成的,运行需要4个小时。我正在寻找蟒蛇熊猫来帮助解决这个问题。
我的问题在于,大熊猫文档似乎完全基于数学方程。
我目前在csv中阅读并使用groupby
按上面的s
组织我的数据,但是如何将其余列合并为我想要的格式。
我最初开始创建list
dicts
lst = []
for row in df.itertuples():
lst.append({"name": row[1], row[2]: row[3]})
然后根据此列表创建一个新的数据框,但我遇到了合并数据帧行的相同问题。
答案 0 :(得分:1)
尝试使用DataFrame.pivot()。
在“s”上进行透视和分组,成为新的索引:
df_pivoted = df.pivot(index='s',columns='p', values='o')
将索引添加为新列:
df_pivoted['name'] = df_pivoted.index
以“记录”格式输出为JSON:
df_pivoted.to_json('output.json',orient='records')
JSON文件应如下所示:
[{"primary_Site":"haematopoietic_and_lymphoid_tissue","sample_id":"683665","site_subtype":"NS","type":"CNV","name":4931958}]