将值和键从嵌套字典映射到列

时间:2019-11-28 04:45:50

标签: python dataframe dictionary nested

我正在使用以下词典

store_dict = {'store1': {'itemA' : 1},
              'store2': {'itemB' : 2},
              'store3': {'itemC' : 3}}

我的最终目标是将值(即嵌套字典)映射到数据框的单独列中。所以我想打开这个数据框

    store

0  store1
1  store2
2  store3
3  store1 

到以下数据框。

    store   item   price

0  store1  itemA       1
1  store2  itemB       2
2  store3  itemC       3
3  store1  itemA       1

我两次使用df['store'].map(store_dict)和一些正则表达式来制作项目和价格列,但是现在我对了解是否有一种直接将嵌套字典的键和值放入列中的方法更感兴趣。在我研究嵌套字典以获取价格的整个过程中,我们必须使用store_dict['store1']['item1'],它无法根据数据的大小进行缩放,而且我仍然不太确定如何只获得商品。

2 个答案:

答案 0 :(得分:1)

尝试一下:

store_dict = {'store1': {'itemA' : 1},
              'store2': {'itemB' : 2},
              'store3': {'itemC' : 3}}
df = pd.concat({        k: pd.DataFrame.from_dict(v, 'index') for k, v in store_dict.items() }, 
    axis=0).reset_index()
df.columns =  ['store', 'item', 'price']
df

输出:

    store   item    price
0   store1  itemA   1
1   store2  itemB   2
2   store3  itemC   3

答案 1 :(得分:1)

您可以这样做:

>>> store_dict = {'store1': {'itemA' : 1},
              'store2': {'itemB' : 2},
              'store3': {'itemC' : 3}}
>>> temp_df = pd.DataFrame(store_dict)
>>> df = pd.DataFrame({'store':temp_df.columns, 'item':temp_df.index, 'price':temp_df.sum(axis = 1)})
>>> df = df.append(df.iloc[0])
>>> df.reset_index()
    store   item  price
0  store1  itemA    1.0
1  store2  itemB    2.0
2  store3  itemC    3.0
3  store1  itemA    1.0
相关问题