我有一个JSON文件,我想在Python中转换为DataFrame对象。我找到了一种方法来进行转换,但遗憾的是它需要很长时间,因此我会问是否有更有效和优雅的方法来进行转换。
我使用json库打开JSON文件作为字典工作正常:
import json
with open('path/file.json') as d:
file = json.load(d)
这是一些模拟真实数据集结构的模拟数据:
dict1 = {'first_level':[{'A': 'abc',
'B': 123,
'C': [{'D' :[{'E': 'zyx'}]}]},
{'A': 'bcd',
'B': 234,
'C': [{'D' :[{'E': 'yxw'}]}]},
{'A': 'cde',
'B': 345},
{'A': 'def',
'B': 456,
'C': [{'D' :[{'E': 'xwv'}]}]}]}
然后我创建一个空的DataFrame并使用for循环将我感兴趣的数据附加到它:
df = pd.DataFrame(columns = ['A', 'B', 'C'])
for i in range(len(dict1['first_level'])):
try:
data = {'A': dict1['first_level'][i]['A'],
'B': dict1['first_level'][i]['B'],
'C': dict1['first_level'][i]['C'][0]['D'][0]['E']}
df = df.append(data, ignore_index = True)
except KeyError:
data = {'A': dict1['first_level'][i]['A'],
'B': dict1['first_level'][i]['B']}
df = df.append(data, ignore_index = True)
有没有办法更有效地从JSON中获取数据,还是可以更优雅地编写for循环?
(遍历数据集(~150k元素)需要一个多小时。我使用的是Python 3.6.3 64位)
答案 0 :(得分:0)
您可以使用https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html
或使用Spark& PySpark很容易转换为数据帧&以这种方式管理您的数据,但这可能超出您的需要。