【问题标题】:how to create a pandas.dataframe of a json with values in a list with no key in Python如何在 Python 中使用没有键的列表中的值创建 json 的 pandas.dataframe
【发布时间】:2017-10-25 22:11:52
【问题描述】:

我有这个 json:

{
"columns": [
    {
        "field": "date",
        "name": "Date",
        "type": "dim"
    },
    {
        "field": "adsetstart_time",
        "name": "Ad set start time",
        "type": "dim"
    },
    {
        "field": "adsetend_time",
        "name": "Ad set end time",
        "type": "dim"
    },
    {
        "field": "adcampaign_id",
        "name": "Campaign ID",
        "type": "dim"
    },
    {
        "field": "cost",
        "name": "Amount spent",
        "type": "met"
    }
],
"data": [
    [
        "2017-10-21",
        "2017-10-02",
        "2017-11-01",
        "6076466058814",
        81.32
    ],
    [
        "2017-10-21",
        "2017-10-04",
        "2017-11-01",
        "6076547852614",
        47.46
    ],
    [
        "2017-10-21",
        "2017-10-04",
        "2017-11-01",
        "6076549546014",
        128.58
    ]
],
"notes": {
    "datasource": "FA",
    "numeric_format_columns_start": 4,
    "numeric_format_rows_start": 0,
    "result_rows": 50,
    "result_values": 250,
    "runtime_sec": 3,
    "status": "success"
}
}

我想要这张桌子:

table

我是编程新手,我尝试修改dictionary 结构,方法是在data 中创建一个新结构,其中包含键值对,如下所示:

{"data": ["Date": "2017-10-24", "Ad set start time": "2017-10-16", "Ad set end time": "2017-10-27", "Campaign ID": "6076811156014", "Amount spent": 106.84],...

我设法提取了列表中的列,但我无法迭代 data 为每个值分配对应的键。

从这个 json 结构创建数据帧的最佳方法是什么?

【问题讨论】:

    标签: python json python-3.x pandas dataframe


    【解决方案1】:
    import pandas as pd
    
    # data = dict provided in OP
    colnames = [x["name"] for x in data["columns"]]
    pd.DataFrame(data["data"], columns=colnames)
    
             Date Ad set start time Ad set end time    Campaign ID  Amount spent
    0  2017-10-21        2017-10-02      2017-11-01  6076466058814         81.32
    1  2017-10-21        2017-10-04      2017-11-01  6076547852614         47.46
    2  2017-10-21        2017-10-04      2017-11-01  6076549546014        128.58
    

    【讨论】:

      【解决方案2】:

      首先读取 json 对象,提取列,然后在 DataFrame 构造函数中使用数据和列。

      import json
      
      with open('jsonfile.json') as f:
          data = json.loads(f)
      
      columns = [field['name'] for field in data['columns']]
      
      pd.DataFrame(data['data'], columns=columns)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-12
        • 1970-01-01
        • 2020-08-03
        • 2023-02-24
        • 2013-01-14
        • 1970-01-01
        • 2016-10-08
        • 2021-05-01
        相关资源
        最近更新 更多