【问题标题】:How can I load this JSON in a dataframe?如何在数据框中加载此 JSON?
【发布时间】:2019-07-18 04:43:15
【问题描述】:

尝试在 Python 中读取以下 JSON 文件:

[[ {"fecha" : "2013-01-01","indicativo" : "3195","nombre" : "MADRID, RETIRO","provincia" : "MADRID","altitud" : "667","tmed" : "6,4","prec" :"0,0"},{"fecha" : "2013-01-02","indicativo" : "3196","nombre" : "MADRID,RETIRO","provincia" : "MADRID","altitud" : "667","tmed" : "6,5","prec" : "0,0"},{"fecha" : "2013-01-03","indicativo" : "3197","nombre": "MADRID, RETIRO","provincia" : "MADRID","altitud" : "667","tmed" : "6,7","prec" : "0,0"}],[ {"fecha" : "2013-02-01","indicativo" : "3195","nombre" : "MADRID, RETIRO","provincia" : "MADRID","altitud" : "667","tmed" : "6,4","prec" : "0,0"},{"fecha" : "2013-02-02","indicativo" :"3196","nombre" : "MADRID, RETIRO","provincia" : "MADRID","altitud" : "667","tmed" : "6,5","prec" : "0,0"}]]

我尝试了以下选项:

选项 1:

df2 = pd.read_json('test.json',orient='split')

结果:

AttributeError: 'list' object has no attribute 'iteritems'

选项 2:

df2 = pd.read_json('test.json',orient='columns')

结果:

我想要的预期结果是:

基本上是一个扁平化的数据框,列名 = 属性,每个元素只有一行。

【问题讨论】:

    标签: python json python-2.7 dataframe


    【解决方案1】:

    也许你可以试试这段代码:

    import pandas as pd
    import json
    
    
    file = './test.json'
    
    with open(file, 'r') as f:
        data = json.load(f)
    
    
    big_df = pd.DataFrame()
    
    for i in range(len(data)):
        a = json.dumps(data[i])
        big_df = pd.concat([big_df, pd.read_json(a)], axis=0)
    
    big_df.reset_index(drop=True)
    

    警告:我已经在python3 中测试了代码,但我认为它也应该在python2 中工作。

    【讨论】:

      【解决方案2】:

      pd.DataFrame 构造函数可以将字典列表作为输入,因此解决方案很简单:

      import pandas as pd    
      import json
      
      file = 'test.json'
      with open(file, 'r') as f:
          data = json.load(f)
      rows = data[0]
      df = pd.DataFrame(rows)
      

      如果您想知道 pd.read_json() 输入的正确格式,请查看 df.to_json()。

      【讨论】:

      • 如果我执行:df6=pd.DataFrame(df2[0][0]) 然后我检索错误: ValueError: If using all scalar values, you must pass an index
      猜你喜欢
      • 2018-03-03
      • 2023-03-30
      • 2016-09-19
      • 2021-11-17
      • 2020-02-05
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 2018-01-03
      相关资源
      最近更新 更多