如何将字典转换为Pandas DataFrame,并将特定的键作为Python中的列名?

snvhrwxg  于 2023-05-21  发布在  Python
关注(0)|答案(2)|浏览(250)

我有一本字典如下:

D = {'mark': [['height', 7], ['weight', 70]],
     'david': [['height', 8], ['weight', 80]],
     'john': [['height', 9], ['weight', 90]]}
print (D)

我想把pandas数据框转换成这样的形式:

names  height  weight
0   mark       7      70
1  david       8      80
2   john       9      90

我试过如下。

df = pd.DataFrame(D)
print (df)

但是,它会产生下面的错误结果。

mark         david          john
0   [height, 7]   [height, 8]   [height, 9]
1  [weight, 70]  [weight, 80]  [weight, 90]

编辑:

如果字典中的值的数量不相同,该怎么办?

D2 = {'mark': [['height', 7], ['weight', 70]],
     'david': [['height', 8], ['weight', 80]],
     'john': [['height', 9]]}
print (D2)
vbopmzt1

vbopmzt11#

您可以用途:

df = pd.DataFrame({k: dict(v) for (k,v) in D.items()}).T.reset_index(names="names")

输出:

print(df)

   names  height  weight
0   mark       7      70
1  david       8      80
2   john       9      90
m1m5dgzv

m1m5dgzv2#

DataFrame.from_dictDataFrame.reset_index一起使用:

df = (pd.DataFrame.from_dict({k: dict(v) for k, v in D.items()}, orient='index')
        .reset_index(names="names"))
print (df)
   names  height  weight
0   mark       7      70
1  david       8      80
2   john       9      90
df = (pd.DataFrame.from_dict({k: dict(v) for k, v in D2.items()}, orient='index')
        .reset_index(names="names"))
print (df)
   names  height  weight
0   mark       7    70.0
1  david       8    80.0
2   john       9     NaN

相关问题