Python 将Json文件读取为数据帧错误

Python 将Json文件读取为数据帧错误,python,json,pandas,Python,Json,Pandas,我有一个Json文件,如下所示。这是一张单子 [{"city": "ab", "trips": 4, "date": "2014-01-25", "value": 4.7, "price": 1.1, "request_date": "2014-06-17", "medium": "iPhone", "%price": 15.4, "type": true, "Weekly_pct": 46.2, "avg_dist": 3.67, "avg_price": 5.0}, {"city": "bc

我有一个Json文件,如下所示。这是一张单子

[{"city": "ab", "trips": 4, "date": "2014-01-25", "value": 4.7, "price": 1.1, "request_date": "2014-06-17", "medium": "iPhone", "%price": 15.4, "type": true, "Weekly_pct": 46.2, "avg_dist": 3.67, "avg_price": 5.0}, {"city": "bc", "trips": 0, "date": "2014-01-29", "value": 5.0, "price": 1.0, "request_date": "2014-05-05", "medium": "Android", "%price": 0.0, "type": false, "weekly_pct": 50.0, "avg_dist": 8.26, "avg_price": 5.0}.....]
当我读到这篇文章时,用的是:

data=pd.read_json('dataset.json')
我得到以下错误:

ValueError:预期的对象或值

我也试过:

from ast import literal_eval

with open('dataset.json') as f:
    data = literal_eval(f.read())

df = pd.DataFrame(data)
它给出了以下错误:

ValueError:格式不正确的字符串

编辑:

即使是Json.loads也不起作用。我试过这个:

import json
data=json.loads('dataset.json')
ValueError:无法解码任何JSON对象


Json文件是13.5MB,但它似乎有大量的数据

我认为您可以使用modul
json
读取
file.json
,然后使用
DataFrame构造函数

import pandas as pd
import json

with open('file.json') as f:
   data = json.load(f)
print data
[{u'city': u'ab', u'medium': u'iPhone', u'request_date': u'2014-06-17', u'price': 1.1, u'Weekly_pct': 46.2, u'value': 4.7, u'%price': 15.4, u'avg_price': 5.0, u'date': u'2014-01-25', u'avg_dist': 3.67, u'type': True, u'trips': 4}, {u'city': u'bc', u'medium': u'Android', u'request_date': u'2014-05-05', u'price': 1.0, u'weekly_pct': 50.0, u'value': 5.0, u'%price': 0.0, u'avg_price': 5.0, u'date': u'2014-01-29', u'avg_dist': 8.26, u'type': False, u'trips': 0}]

print pd.DataFrame(data)

   %price  Weekly_pct  avg_dist  avg_price city        date   medium  price  \
0    15.4        46.2      3.67        5.0   ab  2014-01-25   iPhone    1.1   
1     0.0         NaN      8.26        5.0   bc  2014-01-29  Android    1.0   

  request_date  trips   type  value  weekly_pct  
0   2014-06-17      4   True    4.7         NaN  
1   2014-05-05      0  False    5.0        50.0  

您需要向Pandas指出,
datasets.JSON
中使用了“records”格式(其中JSON显示为字典列表)

res = pd.read_json('input/dataset.json', orient='records')

print(res.iloc[:, :5])
   %price  Weekly_pct  avg_dist  avg_price city
0    15.4        46.2      3.67          5   ab
1     0.0         NaN      8.26          5   bc

我也犯了同样的错误。结果它找不到文件。我修改了路径并
pd.read\u json
运行良好。至于
json.loads
,可能会有帮助。

当pd.read\u json失败时,以下内容对我有用: 打开文件,用普通的json.load加载,然后加载到数据帧中

    import pandas as pd
    import json

    openfile=open('file.json')
    jsondata=json.load(openfile)
    df=pd.DataFrame(jsondata)

    openfile.close()
    print(df)

对我来说,这是一个路径问题。我必须使用的路径取决于运行python文件的目录。可能尝试将“cd”放入python文件的目录中,然后读取json('dataset.json')应该可以工作。

我必须添加参数
lines=True
,以使其工作,例如:

pd.read_json("dataset.json", lines=True)
或者,您可以这样做:

import json
import pandas as pd

with open("dataset.json") as f:
  df = pd.DataFrame([json.loads(l) for l in f.readlines()])
print(df)  # Shows data frame as expected 

json.loads
工作吗?(
import json
first…)没有。我试过它给了我这个错误。检查编辑。我认为您可能会从这个答案中受益:我认为OP给出的示例很有效,并且错误隐藏在大文件中的某个地方……嗯,我在示例中也会得到第一个错误(
ValueError:Expected object or value
),第二个错误(
ValueError:mableformed string
)。但是我的解决方案很有效。我只是按照@jezrael的建议做了。它成功了。但是,我的列顺序不同。像城市应该是第一列,但它的到来顺序不同,因为他也越来越。知道如何获得相同的列名顺序吗?@jezrael知道为什么
read\u json
会失败吗?为什么你的解决方案有效?甚至
json.loads
(带s)也会失败……我认为它失败了,因为
json
文件中的字典列表。它是有效的
json
,但似乎
read_json
不支持这些类型的json。我移动了jupyter笔记本,jupyter无法调整文件路径,因此出现了相同的错误。Pandas正在返回最糟糕的错误消息。