字典字典到数据框,第一个键作为标题,第二个作为列d2值作为数据

问题描述 投票:0回答:1

我有一个像这样的词典:

dict_ = {'c1':{'m1':.9,'m2':.6,'m3':.7},'c2':{'m1':{.3,'m2':.4,'m3':.4},'c3':{.2,'m2':.1,'m3':.6}

我想要一个包含标题的数据框

        c1                     c2                        c3
m1      m2      m3      m1     m2      m3           m1      m2      m3 
.9      .6      .7      .3     .4     .4            .2       .1     .6

任何人都知道如何做到这一点或有更好的格式化方法?

我有没有

header = pd.MultiIndex.from_product([list(metrics_dict.keys()),
                                 list(metrics_dict['c1'])],
                                names=['cs','ms'])

df = pd.DataFrame(columns=header,data=1,index=range(1))

for key, value in metrics_dict.items():
    for metric, ms in value.items():
        df[key][metric].iloc[0] = ms

但它不会取代价值观

pandas dictionary dataframe header
1个回答
0
投票

你的dict_定义有两个错位的括号。正确的定义似乎是:

dict_ = {'c1':{'m1': .9,
               'm2': .6,
               'm3': .7},
         'c2':{'m1': .3,
               'm2': .4,
               'm3': .4},
         'c3':{'m1': .2,
               'm2': 1,
               'm3': .6}
        }

要在列中获取MultiIndex,一种方法是手动将字典键转换为包含所需MultiIndex级别的元组:

tups = {(k1, k2): v for k1, subdict in dict_.iteritems() for k2, v in subdict.iteritems()}

# Need to specify index since each tuple only points to a single value
pd.DataFrame(tups, index=[0])

    c1             c2             c3
    m1   m2   m3   m1   m2   m3   m1   m2   m3
0  0.9  0.6  0.7  0.3  0.4  0.4  0.2  0.1  0.6
© www.soinside.com 2019 - 2024. All rights reserved.