更多pythonic方式将嵌套dicts列表转换为pandas中的表格?

时间:2014-03-01 17:20:39

标签: python csv optimization dictionary pandas

我试图将存储在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行数据帧并在末尾连接它们是低效的,因为除了一行之外的所有行的头都变得多余。感谢。

0 个答案:

没有答案