使用Python分割JSON文件的最简单方法

挑剔的

我正在研究2015年至2020年世界幸福报告的交互式可视化。数据分为6个csv文件。使用熊猫,我成功清理了数据并将它们连接到一个具有以下格式的大JSON文件中:

[
  {
    "Country": "Switzerland",
    "Year": 2015,
    "Happiness Rank": 1,
    "Happiness Score": 7.587000000000001,
  },
  {
    "Country": "Iceland",
    "Year": 2015,
    "Happiness Rank": 2,
    "Happiness Score": 7.561,
  },
  {
    "Country": "Switzerland",
    "Year": 2016,
    "Happiness Rank": 2,
    "Happiness Score": 7.5089999999999995,
  },
  {
    "Country": "Iceland",
    "Year": 2016,
    "Happiness Rank": 3,
    "Happiness Score": 7.501,
  },
  {
    "Country": "Switzerland",
    "Year": 2017,
    "Happiness Rank": 3,
    "Happiness Score": 7.49399995803833,
  },
  {
    "Country": "Iceland",
    "Year": 2017,
    "Happiness Rank": 1,
    "Happiness Score": 7.801,
  }
]

现在,我想以编程方式格式化JSON文件,使其具有以下格式:

{
    "2015": {
        "Switzerland": {
            "Happiness Rank": 1,
            "Happiness Score": 7.587000000000001
        },
        "Iceland": {
            "Happiness Rank": 2,
            "Happiness Score": 7.561
        }
    },
    "2016": {
        "Switzerland": {
            "Happiness Rank": 2,
            "Happiness Score": 7.5089999999999995
        },
        "Iceland": {
            "Happiness Rank": 3,
            "Happiness Score": 7.501
        }
    },
    "2017": {
        "Switzerland": {
            "Happiness Rank": 3,
            "Happiness Score": 7.49399995803833
        },
        "Iceland": {
            "Happiness Rank": 1,
            "Happiness Score": 7.801
        }
    }
}

由于有900多个不同的(国家/地区)对,因此必须以编程方式完成。我想要这种格式的JSON,因为它使JSON文件更具可读性,并且使选择合适的数据更加容易。如果我想要2015年冰岛的排名,那么我可以data[2015]["Iceland"]["Happiness Rank"]

有谁知道最简单/最方便的方式在Python中执行此操作?

保罗·M

如果data是您的原始字典清单:

def by_year(data):
    from itertools import groupby
    from operator import itemgetter

    retain_keys = ("Happiness Rank", "Happiness Score")

    for year, group in groupby(data, key=itemgetter("Year")):
        as_tpl = tuple(group)
        yield str(year), dict(zip(map(itemgetter("Country"), as_tpl), [{k: d[k] for k in retain_keys} for d in as_tpl]))


print(dict(by_year(data)))

输出:

{'2015': {'Switzerland': {'Happiness Rank': 1, 'Happiness Score': 7.587000000000001}, 'Iceland': {'Happiness Rank': 2, 'Happiness Score': 7.561}}, '2016': {'Switzerland': {'Happiness Rank': 2, 'Happiness Score': 7.5089999999999995}, 'Iceland': {'Happiness Rank': 3, 'Happiness Score': 7.501}}, '2017': {'Switzerland': {'Happiness Rank': 3, 'Happiness Score': 7.49399995803833}, 'Iceland': {'Happiness Rank': 1, 'Happiness Score': 7.801}}}
>>> 

假设字典中的字典data已经按年分组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

用Python读取/写入文件内容的最简单方法

使用jcifs读取文件的最简单方法

我需要一种使用python脚本更改文件内容的最简单方法

使用matplotlib从JSON绘制数据的最简单方法吗?

使用 python 写入 SQL 表的最简单方法

使用Python进行SSH的最简单方法是什么?

下载文件的最简单方法?

解析JSON响应的最简单方法

读取 Java 文件的最简单方法 - 是否有更简单的 JSON 替代方法

使用/创建PendingIntent的最简单方法

使用OrientDB ETL将简单的csv文件导入图形的最简单方法

从Java中的结构化原始文件创建json文件的最简单方法?

在Python中开发简单GUI的最简单方法

在Python中将数组保存到栅格文件的最简单方法

在Python中读取文件时忽略空行的最简单方法

在文本文件Python中编辑密码的最简单方法

使用车把在.hbs文件之间进行链接的最简单方法是什么?

使用ASP.NET 5提供静态文件的最简单方法是什么?

使用 ArrayList 中的值创建新文本文件的最简单方法是什么?

仅使用PHP函数从HTML文件解析标题的最简单方法,无需额外的类

使用 `flask run` cli 命令加载 .env 文件的最简单方法?

使用gin gonic返回文字JSON的最简单方法

使用jQuery和Javascript获取json并解析它的最简单方法?

使用 iOS 和 Swift 访问深度嵌套的 json 数据的最简单方法是什么?

linux终端创建日志文件的最简单方法

从文件读取多行(作为滑动窗口)的最简单方法

创建要在函数内编写的文件的最简单方法?

从父文件夹导入模块的最简单方法?

读取Groovy中Excel文件的最简单方法?