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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典字典到数据框,第一个键作为标题,第二个作为列d2值作为数据相关的知识,希望对你有一定的参考价值。

我有一个像这样的词典:

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

但它不会取代价值观

答案

你的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

以上是关于字典字典到数据框,第一个键作为标题,第二个作为列d2值作为数据的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 数据框行到列表的字典,使用每行的第一个值作为键

如何按列对pyspark中的数据框进行分组并以该列作为键并以记录列表作为其值来获取字典?

通过将键作为列将 json 字典转换为 spark 数据帧

使用第一列作为键,第二列作为值的 DataFrame 到 Json

获取数据框列表并按变量分组,并使用该变量作为字典的键

列表和字典的列表列