Json数据到Pandas

2024-06-28 11:57:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个复杂的JSON数据。我想把这个JSON直接转换成pandas数据帧

所需的JSON有23条记录。 我只粘贴了2张唱片

       {"total":1,"page":1,"records":23,"rows": 
       [{"indexdailywaterlevel":0,
       "indexcount":1,
       "stationid":347,
       "stationcode":"P.17",
       "basinname":"ปิง",
        "amphurname":"บรรพตพิสัย",
       "provincename":"นครสวรรค์",
       "braelevel_qmax":"39.80|2990.00",
       "waterlevelvalueQ7":"35.14|248.00|8.2943143812709||",
      "waterlevelvalueQ6":"35.17|259.00|8.66220735785953||",
       "waterlevelvalueQ5":"35.27|293.00|9.79933110367893||",
       "waterlevelvalueQ4":"35.19|266.00|8.89632107023411||",
        "waterlevelvalueQ3":"35.14|248.00|8.2943143812709||",
       "waterlevelvalueQ2":"35.02|207.00|6.92307692307692||",
       "waterlevelvalueQ1":"35.05|217.00|7.25752508361204||",
       "weekaverage":"35.14|248.29|8.30387004300048||",
       "capacitypercent":7.25752508361204,
        "wlstatus":null}, 
        {"indexdailywaterlevel":0,
       "indexcount":2,
       "stationid":345,
       "stationcode":"N.67",
       "basinname":"น่าน",
       "amphurname":"ชุมแสง",
    "provincename":"นครสวรรค์",
    "braelevel_qmax":"28.30|1579.00",
    "waterlevelvalueQ7":"20.14|215.00|13.6162127929069||",
     "waterlevelvalueQ6":"20.10|210.00|13.299556681444||",
    "waterlevelvalueQ5":"20.00|202.00|12.7929069031032||",
    "waterlevelvalueQ4":"20.00|202.00|12.7929069031032||",
    "waterlevelvalueQ3":"19.98|200.00|12.6662444585181||",
    "waterlevelvalueQ2":"19.95|198.00|12.5395820139329||",
    "waterlevelvalueQ1":"19.95|198.00|12.5395820139329||",
    "weekaverage":"20.02|203.57|12.8924273952773||",
    "capacitypercent":12.539582013932868,
    "wlstatus":null}]}

记录从“indexdailywaterlevel”:0开始,在“wlstatus”:null结束

我试过了 pd.read\u json(data.json) 它的输出是

      page 1 ,records 23{'provincename': 'นครสวรรค์', 
      'waterlevelvalueQ6': 
      '35.17|259.00|8.66220735785953||', 'wlstatus': None, 
     'waterlevelvalueQ1': '35.05|217.00|7.25752508361204||', 'indexcount': 
      1, 'waterlevelvalueQ4': '35.19|266.00|8.89632107023411||', 
      'basinname': 'ปิง', 'waterlevelvalueQ3': 
       '35.14|248.00|8.2943143812709||', 'indexdailywaterlevel': 0, 
       'stationcode': 'P.17', 'waterlevelvalueQ5': 
        '35.27|293.00|9.79933110367893||', 'weekaverage': 
      '35.14|248.29|8.30387004300048||', 'waterlevelvalueQ7': 
      '35.14|248.00|8.2943143812709||', 'braelevel_qmax': '39.80|2990.00', 
   'capacitypercent': 7.25752508361204, 'amphurname': 'บรรพตพภ
   ´à¸ªà¸±à¸¢', 'waterlevelvalueQ2': '35.02|207.00|6.92307692307692||', 
    'stationid': 347},total 1

所有的列都在一个单独的第三列中。我如何将它划分为不同的列 列


Tags: jsonprovincenamestationidqmaxindexcountstationcodewaterlevelvalueq5braelevel
1条回答
网友
1楼 · 发布于 2024-06-28 11:57:08

我假设您想要的数据在rows列中。您可以使用:

pandas.io.json.json_normalize(df["rows"])

这将产生:

amphurname basinname braelevel_qmax capacitypercent  ...
??????????  ???      39.80|2990.00   7.257525
??????      ????     28.30|1579.00   12.539582
...

签出pandas.io.json_normalize

相关问题 更多 >