【问题标题】:How to form a dictionary for use in JSON body from a Pandas data frame?如何从 Pandas 数据框中形成用于 JSON 正文的字典?
【发布时间】:2022-10-24 17:41:11
【问题描述】:

我的起始数据框如下所示:

my_list = [
    ['Japan', 'Flowers'],
    ['United States', 'Guns', 'yes'],
    ['Japan', 'Sushi'],
    ['South Korea', 'Sunscreen']
]

df = pd.DataFrame(my_list, columns=["country", "sector", "flag"])

对于 API 请求,我需要输出采用这种精确的字典格式,但我不能完全按照它需要使用 to_dict() 方法来格式化它。 “id”是数据所在数据框中的行数。

{"groups":
[
    {
        "name": "Japan",
        "groups":
            [
                {"name": "Flowers", "ids": [0]}
            ],
        "groups":
            [
                {"name": "Sushi", "ids": [2]}
            ]
    },
    {
        "name": "United States",
        "groups":
            [
                {
                    "name": "Guns",
                    "groups":
                        [
                            {"name": "yes", "ids": [1]}
                        ]
                }
            ]
    },
    {
        "name": "South Korea",
        "groups":
            [
                {"name": "Sunscreen",
                 "ids": [3]}
            ]
    }
    ]
}

【问题讨论】:

    标签: python json pandas


    【解决方案1】:

    尝试:

    out = []
    for idx, g in df.groupby("country"):
        out.append({"name": idx})
        ids = {}
        for i, s in g["sector"].iteritems():
            ids.setdefault(s, []).append(i)
        out[-1]["groups"] = [{"name": k, "ids": v} for k, v in ids.items()]
    
    
    out = {"groups": out}
    print(out)
    

    印刷:

    {
        "groups": [
            {
                "name": "Japan",
                "groups": [
                    {"name": "Flowers", "ids": [0]},
                    {"name": "Sushi", "ids": [2]},
                ],
            },
            {"name": "South Korea", "groups": [{"name": "Sunscreen", "ids": [3]}]},
            {"name": "United States", "groups": [{"name": "Guns", "ids": [1]}]},
        ]
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 2016-06-28
      • 2021-04-18
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 2021-12-08
      • 2018-05-08
      相关资源
      最近更新 更多