[英]Convert nested dictionary of lists into pandas dataframe efficiently
我有一个这样的json对象
{
"hits": {
"hits": [
{
"_source": {
"TYPES": [
{
"_ID": 130,
"_NM": "ARB-130"
},
{
"_ID": 131,
"_NM": "ARB-131"
},
{
"_ID": 132,
"_NM": "ARB-132"
}
]
}
},
{
"_source": {
"TYPES": [
{
"_ID": 902,
"_NM": "ARB-902"
},
{
"_ID": 903,
"_NM": "ARB-903"
},
{
"_ID": 904,
"_NM": "ARB-904"
}
]
}
}
]
}
}
我需要将其解包到pandas数据框中,以便在_types对象下获得所有唯一的_id和_nm对
_ID _NM
0 130 ARB-130
1 131 ARB-131
2 132 ARB-132
3 902 ARB-902
4 903 ARB-903
5 904 ARB-904
我正在寻找最快的解决方案,因为类型数和类型中的对数可能达到数十万。 因此,使用pd.Series进行解压缩并使用apply会使速度变慢,如果可能,我想避免这样做。 任何想法,将不胜感激。 也涉及将字典或一列中的列表分解为单独的列而无需使用pd.Series的情况,因为我经常遇到此用例
一种方法是重组字典并使用itertools.chain
展平。
为了提高性能,您应该以数据为基准。
from itertools import chain
res = list(chain.from_iterable(i['_source']['TYPES'] for i in d['hits']['hits']))
df = pd.DataFrame(res)
print(df)
_ID _NM
0 130 ARB-130
1 131 ARB-131
2 132 ARB-132
3 902 ARB-902
4 903 ARB-903
5 904 ARB-904
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.