【问题标题】:Convert JSON list to pandas dataframe将 JSON 列表转换为 pandas 数据框
【发布时间】:2020-09-02 10:19:57
【问题描述】:

我有非常大的 json 数据,语法如下:

[
 {
   "origin": 101011001,
   "destinations": [
    {"destination": 101011001, "people": 7378},
    {"destination": 101011002, "people": 120}
   ]
 },
 {
   "origin": 101011002,
   "destinations": [
    {"destination": 101011001, "people": 754},
 }
]

[在此处输入图片描述][1]

我的目标是将数据转换为 pandas 数据框,然后我想将其转换为 sql 以作为表存储在我的 postgresql 数据库中。

我想创建一个这样的熊猫数据框:

origin    destination  people
101011001 101011001    7378
101011001 101011002    120 
101011002 101011001    754

现在,我只能使用 pandas.read_json() 获取列 'origin' 和 'destinations',其中 destinations 是一个包含目标值和人员值的列表。

如何实现上述数据框?

【问题讨论】:

    标签: python sql json pandas dataframe


    【解决方案1】:

    使用json_normalize。这应该按预期工作:

    编辑(从stringlist of dicts,然后是json_normalize

    data = """[
     {
       "origin": 101011001,
       "destinations": [
        {"destination": 101011001, "people": 7378},
        {"destination": 101011002, "people": 120}
       ]
     },
     {
       "origin": 101011002,
       "destinations": [
        {"destination": 101011001, "people": 754}]
     }
    ]"""
    
    from pandas import json_normalize
    import json
    
    data = json.loads(data)
    df = json_normalize(data,"destinations",['origin'])
    df.head()
    

    【讨论】:

    • 我的数据来自一个 webapi,我使用了 requests.get(url),并且有 60000+ 个值。我应该使用什么方法来加载你的代码的数据?
    • json_normalize 要求数据是 listdicts - 这是您的数据的样子(例如) - 它在现实中的样子?
    • 我的数据看起来像上面,但它不是字典,因为我是从 json 格式的 webapi 获取的
    • 那么,string?使用import json;data = json.loads(data)转换成上面的格式!
    • 对不起,我对 json 很陌生,所以我不知道很多东西是什么意思
    猜你喜欢
    • 2021-02-09
    • 2021-09-27
    • 2019-05-14
    • 2017-06-22
    • 2021-03-22
    • 2019-07-01
    • 2021-12-13
    • 2017-05-03
    • 2021-01-22
    相关资源
    最近更新 更多