杰森数据到熊猫

时间:2019-01-15 13:16:25

标签: python python-3.x pandas

我有一个复杂的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_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

所有列都在第3列中。如何将其分开  列?

1 个答案:

答案 0 :(得分:1)

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

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