我使用REST API
获取json
文件,如下所示:
import urllib2
import pandas as pd
import numpy as np
import requests
request='myrequest'
data= requests.get(request)
json=data.json()
df=pd.DataFrame(json)
,数据框看起来像
items
0 {u'access': u'all', u'count': 501, u'time': 2014}
1 {u'access': u'all', u'count': 381, u'time': 2015}
如何将这个单列(看起来像字典)转换为Pandas中的正确列?
修改
原始json数据看起来像这样
{
"items": [
{
"access": "all",
"count": 200,
"time": 2015
},
{
"access": "all",
"count": 14,
"time": 2015
},
]
}
谢谢!
答案 0 :(得分:7)
pd.read_json(json_str)
<强> 编辑: 强>
有关json str的列表,您也可以:
import json
import pandas as pd
df = pd.DataFrame.from_records(map(json.loads, json_lst))
答案 1 :(得分:1)
好吧,在我看来,JSON导入嵌套包含dicts和list的任何变体,而Pandas需要一个带有可迭代元素的单个dict集合。因此,如果它们不匹配,您必须进行一些转换。
假设我正确地解释了你的JSON的结构(我可能不会,因为你只打印最终产品,而不是JSON结构),它看起来像是一个字典列表。如果是这种情况,这是解决方案:
data = {k:[v] for k,v in json[0].items()}
for jso in json[1:]:
for k,v in jso.items():
data[k].append(v)
df = pd.DataFrame(data)
编辑:
提供了值,为了让我的代码正常工作,您只需要在前面提供以下内容:
json = json["items"]
我认为这应该有效,但这取决于请求如何处理JSON。如果json
对象无法正常工作,请给我打印输出。