【问题标题】:best practice for working with deeply nested json data in python在 python 中处理深度嵌套的 json 数据的最佳实践
【发布时间】:2020-01-25 20:19:14
【问题描述】:

我正在尝试从这个深度嵌套的 json 结构创建一个 csv 文件:

{
            "id": "12345678",
            "name": "BOOGIEMAN",
            "account_id": "1234567",
            "campaign_id": "123",
            "attribution_spec": [
                {
                    "event_type": "CLICK_THROUGH",
                    "window_days": 1
                }
            ],
            "bid_amount": 14000,
            "bid_info": {
                "REACH": 14000
            },
            "bid_strategy": "LOWEST_COST_WITH_BID_CAP",
            "pacing_type": [
                "standard"
            ],
            "promoted_object": {
                "application_id": "123456",
                "custom_event_type": "PURCHASE",
                "object_store_url": "https://itunes.apple.com/app/123456"
            },
            "recurring_budget_semantics": true,
            "review_feedback": "[]",
            "source_adset": {
                "id": "1234567"
            },
            "source_adset_id": "1234567",
            "start_time": "2019-12-12T17:10:20+0100",
            "status": "ACTIVE",
            "targeting": {
                "age_max": 65,
                "age_min": 20,
                "custom_audiences": [
                    {
                        "id": "1234567",
                        "name": "SAMPLE_NAME"
                    }
                ],
                "exclusions": {
                    "interests": [
                        {
                            "id": "123",
                            "name": "Teens Fashion"
                        },
                        {
                            "id": "456",
                            "name": "Boomerang (TV channel)"
                        },
                        {
                            "id": "7895",
                            "name": "Boomerang"
                        },
                        {
                            "id": "123",
                            "name": "Nickelodeon Games and Sports for Kids"
                        },
                        {
                            "id": "555",
                            "name": "Disney Interactive"
                        },
                        {
                            "id": "123123",
                            "name": "Disney Channel"
                        },
                        {
                            "id": "6456",
                            "name": "CBBC (TV channel)"
                        },
                        {
                            "id": "124124",
                            "name": "Nickelodeon"
                        },
                        {
                            "id": "34653254",
                            "name": "Cartoon Network"
                        },
                        {
                            "id": "12414",
                            "name": "The Children's Channel"
                        },
                        {
                            "id": "325623",
                            "name": "International Children's Games"
                        },
                        {
                            "id": "325234",
                            "name": "Children's television series"
                        },
                        {
                            "id": "6324535",
                            "name": "Teens Only ღ"
                        },
                        {
                            "id": "6013742415695",
                            "name": "Books for Kids"
                        }
                    ]
                },
                "targeting_optimization": "none",
                "user_device": [
                    "iPad",
                    "iPhone"
                ],
                "user_os": [
                    "iOS_ver_9.0_and_above"
                ]
            },
            "updated_time": "2019-12-20T13:04:20+0100",
            "use_new_app_click": false
        }

我尝试使用 Pandas for Python 库,我能够将数据解压到 1 级,但我想尽可能多地解压这些数据,这样就不会有任何列表或对象。

我想这个问题更多地围绕着处理此类数据的最佳实践是什么?

样本输出?:

【问题讨论】:

  • Csv 文件根据定义只有 1 级。您希望这样的文件看起来如何?如果您想创建多个 csv 文件,我会理解。
  • @uri 我猜对于每个级别的数据,您必须创建一个新行并考虑所有级别。因此,如果我说得对,假设有 1 条记录,总共 30 列,第 29 列有 2 个对象,第 30 列有 5 个对象。要考虑所有级别,您需要创建 10 条记录吗?我想最终目标是在一个 csv 文件中尽可能平坦
  • @dataviews 我不确定我是否理解您的解释,您能详细说明一下吗? 我想这个问题更多地围绕着处理此类数据的最佳实践应该是什么?如果没有任何关于要执行的工作类型的信息,这将很难回答。
  • @AMC 看看这张照片:i.stack.imgur.com/oOlCD.png
  • @AMC 我基本上想把这个数据扁平化到 0 个级别

标签: python json python-3.x pandas


【解决方案1】:

我个人只使用 csv 库。 https://docs.python.org/3.8/library/csv.html

这是一篇详细的文章,解释了它在这种情况下的用途。 http://blog.appliedinformaticsinc.com/how-to-parse-and-convert-json-to-csv-using-python/

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多