Python 将JSON解析为数据帧,但保留id
我正在尝试分析一些响应数据(在JSON blob中),并使用字母数字id连接到其他相关记录。我在解析JSON的同时保持id关联方面遇到了问题,因为我的解析方法涉及将JSON记录转换为列表。有没有一个好的方法来实现这一点 此数据来自如下表: 答复| id ---|--- [{”说明:业务类型…| 1bb15c61 [{”说明:业务类型…| 4bc12c99 每个记录都有一个字段,即JSON块(包含多个字典的列表)和一个id JSON看起来像这样,但更长:Python 将JSON解析为数据帧,但保留id,python,json,pandas,Python,Json,Pandas,我正在尝试分析一些响应数据(在JSON blob中),并使用字母数字id连接到其他相关记录。我在解析JSON的同时保持id关联方面遇到了问题,因为我的解析方法涉及将JSON记录转换为列表。有没有一个好的方法来实现这一点 此数据来自如下表: 答复| id ---|--- [{”说明:业务类型…| 1bb15c61 [{”说明:业务类型…| 4bc12c99 每个记录都有一个字段,即JSON块(包含多个字典的列表)和一个id JSON看起来像这样,但更长: [{ "description":
[{
"description": "Business type",
"input": "sole_proprietorship",
"result": "approved
}, {
"description": "Credit score",
"input": 680,
"result": "approved"
}]
我正在从PSQL查询中将其读入数据帧。JSON blob称为“响应”。我就是这样解析它的:
parsed_list=[]
对于枚举中的i,j(df['responses']):
尝试:
解析的_list.append(json.loads(j))
除:
通过
解析的_df=[]
对于i,u在枚举(已解析的_列表)中:
parsed_df.append(json_规范化(parsed_list[i]))
解析的_-df=pd.concat(解析的_-df)
这会从JSON生成一个可用的数据帧,但显然会丢失id。一条记录会生成多行数据,理想情况下,我希望给定记录的每一行都与同一id关联,以便稍后可以获取它以连接到其他信息
说明|输入|结果| id---|---|---|--- 业务类型|独资|批准| 1bb15c61
信用评分| 680 |批准| 1bb15c61业务类型|非营利性|审查| 4bc12c99信用评分| 600 |批准| 4bc12c99
我认为我需要以不同的方式解析JSON,但我不确定如何以保留id的方式进行解析。使用
zip
函数可能会解决您的问题
df['responses'] = [{"description":"Business type", "input": "sole_proprietorship", "result": "approved"}, {"description": "Credit score","input": 680,"result": "approved"}]
df['id'] = [1bb15c61, 4bc12c99]
for i, j in zip(df['responses'], df['id']):
print(i, j)
输出:
{'description': 'Business type', 'input': 'sole_proprietorship', 'result': 'approved'} 1bb15c61
{'description': 'Credit score', 'input': 680, 'result': 'approved'} 4bc12c99
这就是我最后做的:
def try_parse_json(x):
try:
out = json.loads(x)
except:
out = "parsing error"
return out
df_json = [try_parse_json(x) for x in parsed_df.responses]
flatten_df = pd.DataFrame(data=df_json, index=responses.id)
这给了我一个宽大的数据框架,在对应的JSON旁边有一个id字段,我可以将其进一步处理为可用状态。完全不清楚您从何处提取id。此外,解析JSON并不是真正可以协商的,结果也不是可变的,因此您认为解析错误的结论可能是错误的。id是来自包含JSON块的表。我不认为我解析错了,但我正在寻找一种方法,允许我保持与id的关联。你能更新数据描述以包含id字段吗?所以,所有JSON的说法都是转移视线,因为JSON中从未包含id。相反,它是一个idDB与表中的一行关联。在这种情况下,您需要在从DB中检索它之后自己跟踪它。建议:首先定义您最终想要的数据结构,然后尝试从数据中获取它。这与我想要的更接近,但我在解析id时遇到了问题,当时它只是一个附录d到最后。谢谢你的建议!