python - Pandas 基于 key 格式化 csv 数据

标签 python json csv pandas dataframe

我有一个很大的 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 个小时。我正在研究 python pandas 来帮助解决这个问题。 我的问题是 pandas 文档似乎完全基于数学方程。 我目前正在阅读 csv 并使用 groupby 按上面的 s 组织我的数据,但是如何将剩余的列合并为我想要的格式。

我最初是创建一个 dictslist

lst = []
for row in df.itertuples():
    lst.append({"name": row[1], row[2]: row[3]})  

然后根据此列表创建一个新的数据框,但我遇到了合并数据框的行的相同问题。

最佳答案

尝试 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}]

关于python - Pandas 基于 key 格式化 csv 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40871679/

相关文章:

python - 如何配置vim在编辑python文件时不在行首添加注释

python - Pygame-同时运行两件事

javascript - 将字符串转换为 JSON 对象

json - 使用 Lodash 重命名数组/对象中的几个键

python - Pandas:连接多个 .csv 文件并返回具有聚合的同名列的 Dataframe

python - 从当前日期将 csv 获取到 pandas 数据框中

python - 使用 Python os.walk 识别文件列表

python - PyCharm 摆脱 doctest 背景颜色

angularjs - ( Angular http$): Cannot read property 'length' of undefined

javascript - 在 javascript 中搜索 (D3)