我试图将存储在csv中的嵌套jsons列表转换为两个表。 每个嵌套看起来像这样:
{'a': {'foo': 'bar',
'bar': 'foo'},
'b': {'foo': 'bar'},
'id': '11111111',
'c': {'foo': 'bar',
'foo': 'bar',},
'd': [{'id': '1111',
'foo': 'bar',
'foo': 'bar'},
{'id': '1111',
'foo': 'bar',
'foo': 'bar'}],
'timeStamp': '2014-02-08T06:22:32Z',
'e': {'foo': 'bar'}}
到目前为止我的代码看起来像这样:
rows=[]
products=[]
for k,j in json_series.iteritems():
prod =j.pop('d')
prod_df= pd.DataFrame.from_dict(prod)
products.append(prod_df)
nonce = j.pop('id')
ts = j.pop('timeStamp')
try:
i= j.pop('key_to_ignore')
except:
frames=[]
for x in j:
frame =pd.DataFrame(j[x].values()).T
frame.columns = j[x].keys()
frames.append(frame)
row = pd.concat(frames, axis=1)
row['key'] = nonce
row['timestamp'] = ts
rows.append(row)
df_non_prod= pd.concat(rows)
df_prod= pd.concat(products)
这很有效,但看起来很难看,我想了解如何让它变得更好。存储1行数据帧并在末尾连接它们是低效的,因为除了一行之外的所有行的头都变得多余。感谢。