Python Dask将JSON嵌套到数据帧
我需要解析一个巨大的嵌套JSON文件。我目前正在Pandas中实现它,但是我想知道我是否可以在Dask中实现它以提高速度/可伸缩性 我目前的代码是:Python Dask将JSON嵌套到数据帧,python,json,pandas,dask,Python,Json,Pandas,Dask,我需要解析一个巨大的嵌套JSON文件。我目前正在Pandas中实现它,但是我想知道我是否可以在Dask中实现它以提高速度/可伸缩性 我目前的代码是: import pandas as pd json_data = pd.read_json(input_file) feature_df = json_normalize(json_obj["Features"], record_path=["Cycles","Pools"], meta=["FeatureID"]) 我已经在Da
import pandas as pd
json_data = pd.read_json(input_file)
feature_df = json_normalize(json_obj["Features"],
record_path=["Cycles","Pools"],
meta=["FeatureID"])
我已经在Dask中获得了以下代码,但在互联网站上找不到有关如何执行此操作的更多信息:
import dask.bag as db
import json
json_data = db.read_text(input_file).map(json.loads)
这将返回一个dask包,我需要找出如何正确解析它
我的JSON结构如下:
{
"FovID":1,
"Features":[
{
"FeatureID":"1_166_155",
"X":166,
"Y":155,
"Cycles":[
{
"CycleID":31,
"Pools":[
{
"PoolID":1,
"BC":"1224",
"Qual":"999",
"Category":"000"
},
{
"PoolID":2,
"BC":"0",
"Qual":"999",
"Category":"000"}
}]}
json_data = dd.read_json(self.input_s6, orient='columns').compute()
解决方案:
我没有使用dask包,而是按照@mdurant的建议将JSON直接读入数据帧,如下所示:
{
"FovID":1,
"Features":[
{
"FeatureID":"1_166_155",
"X":166,
"Y":155,
"Cycles":[
{
"CycleID":31,
"Pools":[
{
"PoolID":1,
"BC":"1224",
"Qual":"999",
"Category":"000"
},
{
"PoolID":2,
"BC":"0",
"Qual":"999",
"Category":"000"}
}]}
json_data = dd.read_json(self.input_s6, orient='columns').compute()
您确实可以使用bagapi来完成工作,但daskdataframeapi也有一个与pandas版本类似的功能
在使用了它之后,您可能希望使用它对结果字典进行逐行的进一步缩减。很高兴知道!您能提供一个我将用于示例JSON的语法示例吗?事实上,执行以下操作(不包括解析列)比用uJSON加载JSON然后用JSON_normalize()解析要慢。我做错什么了吗
json\u data=dd.read\u json(self.input\u s6,orient='columns').compute()
dask只调用函数,因此如果您的数据小到可以放入内存,并且程序占用CPU的时间最多,那么当您所做的只是在主线程中实现整个过程,而不是进行任何处理时,您可能只会增加开销。