我正在使用以下词典
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']
,它无法根据数据的大小进行缩放,而且我仍然不太确定如何只获得商品。
答案 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