python - python 中的 Json 对象到 CSV

标签 python json csv

我正在调用 API,它会将值作为 Json 对象返回给我,如下所示:

{
    "indicator_value": {
        "AFG": {
            "137506": {
                "2002": 0.373,
                "2003": 0.383,
                "2004": 0.398,
                "2005": 0.408,
                "2006": 0.417,
                "2007": 0.429,
                "2008": 0.437,
                "2009": 0.453,
                "2010": 0.463,
                "2011": 0.471,
                "2012": 0.482,
                "2013": 0.487,
                "2014": 0.491,
                "2015": 0.493,
                "2016": 0.494,
                "2017": 0.498
            }
        },
        "AGO": {
            "137506": {
                "1999": 0.374,
                "2000": 0.387,
                "2001": 0.401,
                "2002": 0.418,
                "2003": 0.429,
                "2004": 0.442,
                "2005": 0.455,
                "2006": 0.471,
                "2007": 0.492,
                "2008": 0.502,
                "2009": 0.522,
                "2010": 0.52,
                "2011": 0.534,
                "2012": 0.543,
                "2013": 0.554,
                "2014": 0.564,
                "2015": 0.572,
                "2016": 0.577,
                "2017": 0.581
            }
        },

文件继续这样,然后在indicator_value数组之后还有另外两个我不感兴趣的数组。

任何人都可以建议我如何使用 python 将其转换为以下格式的 csv 文件:

indicator | country | year | value
 HDI      | AFG     | 2017 | 0.498
 HDI      | AFG     | 2016 | 0.494

最佳答案

这可能会起作用,具体取决于其余数据的样子:

import pandas as pd

rows = []
for k1, v1 in data['indicator_value'].items():
    row = ['HDI', k1]
    for k2, v2 in v1.items():
        for k3, v3 in v2.items():
            rows.append(row + [k3, v3])

df = pd.DataFrame(rows, columns=['indicator', 'country', 'year', 'value'])

其中dfpandas DataFrame 和 df.head() 现在看起来像:

pandas output

现在您可以执行df.to_csv(fname)

关于python - python 中的 Json 对象到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58238190/

相关文章:

python - 将日期列添加到 python 中的 append 输出 csv 文件

Python Pandas - 添加一个新列,其值基于多列中的名字和姓氏

python - 在不使用 eval 函数的情况下将 json 文件中的算术运算应用于数据框

python - 基础 Python - 查找列表中元素之间的差异 - IndexError

python - python质数检查的困难

java - Android - 使用 java 对象转换 API JSON 结果以设置不同的设计

python - 如何将文件列表的名称从同一文件夹中的同一numpy文件中按顺序排列?

objective-c - 在应用程序启动之前从 JSON 文件填充 CoreData 数据模型

javascript - 动态计算 json 行数

csv - 读取缺少列和随机列顺序的csv文件