【问题标题】:JSON file to Pandas dfJSON 文件到 Pandas df
【发布时间】:2017-04-05 10:26:04
【问题描述】:

我正在尝试将 JSON 文件转换为 pandas df 以删除不需要的数据并限制为 ID 的 csv,数据如下所示:

{
     "data": [
    {
      "message": "Uneeded message",
      "created_time": "2017-04-02T17:20:37+0000",
      "id": "723456782912449_1008262099345654"
    },
    {
      "message": "Uneeded message",
      "created_time": "2017-03-28T06:26:28+0000",
      "id": "771345678912449_1003934567871010"
    },

我以前没有使用过 JSON,但我用来加载此数据的代码是

import pandas as pd
import json

with open('fileName.json', encoding="utf8" ) as f:
    w = json.loads(f.read(), strict=False)

最终输出应该只是一个带有 ID 列的 CSV

【问题讨论】:

    标签: python json pandas dataframe


    【解决方案1】:

    我觉得你需要json_normalize:

    from pandas.io.json import json_normalize 
    import json
    
    with open('file.json') as data_file:    
        d = json.load(data_file)
    
    print (d)
    {
        "data": [{
            "message": "Uneeded message",
            "created_time": "2017-04-02T17:20:37+0000",
            "id": "723456782912449_1008262099345654"
        }, {
            "message": "Uneeded message",
            "created_time": "2017-03-28T06:26:28+0000",
            "id": "771345678912449_1003934567871010"
        }]
    }
    
    df = json_normalize(d, 'data')
    print (df)
                   created_time                                id          message
    0  2017-04-02T17:20:37+0000  723456782912449_1008262099345654  Uneeded message
    1  2017-03-28T06:26:28+0000  771345678912449_1003934567871010  Uneeded message
    

    【讨论】:

      【解决方案2】:

      使用json.loads

      设置

      json_str = """{
       "data": [
              {
                "message": "Uneeded message",
                "created_time": "2017-04-02T17:20:37+0000",
                "id": "723456782912449_1008262099345654"
              },
              {
                "message": "Uneeded message",
                "created_time": "2017-03-28T06:26:28+0000",
                "id": "771345678912449_1003934567871010"
              }]}"""
      

      解决方案

      import json
      import pandas as pd
      
      pd.DataFrame(json.loads(json_str)['data'])
      
                     created_time                                id          message
      0  2017-04-02T17:20:37+0000  723456782912449_1008262099345654  Uneeded message
      1  2017-03-28T06:26:28+0000  771345678912449_1003934567871010  Uneeded message
      

      或者使用文件中的json

      with open('neutraluk1.json') as f:
          print(pd.DataFrame(json.load(f)['data']))
      
                     created_time                                id          message
      0  2017-04-02T17:20:37+0000  723456782912449_1008262099345654  Uneeded message
      1  2017-03-28T06:26:28+0000  771345678912449_1003934567871010  Uneeded message
      

      【讨论】:

        猜你喜欢
        • 2021-06-15
        • 2020-04-24
        • 1970-01-01
        • 2018-09-24
        • 1970-01-01
        • 2021-02-02
        • 2020-05-27
        • 2018-08-20
        • 1970-01-01
        相关资源
        最近更新 更多