很抱歉,如果它是重复的,但我没有在互联网上找到解决方案...
我有一些字典
{'a':1, 'b':2, 'c':3}
现在我想构建pandas DF,其中列名对应于键,值对应于值。实际上它应该是只有一行的Df。
a b c
1 2 3
在另一个主题中,我发现只有解决方案,其中 - 键和值都是新DF中的列。
答案 0 :(得分:3)
这里有一些注意事项,如果您只是将dict传递给DataFrame构造函数,那么它会引发错误:
ValueError:如果使用所有标量值,则必须传递索引
要解决这个问题,你可以传递一个可行的索引:
In [139]:
temp = {'a':1,'b':2,'c':3}
pd.DataFrame(temp, index=[0])
Out[139]:
a b c
0 1 2 3
理想情况下,您的值应该是可迭代的,所以列表或数组如:
In [141]:
temp = {'a':[1],'b':[2],'c':[3]}
pd.DataFrame(temp)
Out[141]:
a b c
0 1 2 3
感谢@joris指出如果你将dict包装在一个列表中,那么你不必将索引传递给构造函数:
In [142]:
temp = {'a':1,'b':2,'c':3}
pd.DataFrame([temp])
Out[142]:
a b c
0 1 2 3
答案 1 :(得分:0)
为了提高灵活性,您还可以将pd.DataFrame.from_dict
与orient='index'
一起使用。这适用于您的字典值是标量还是列表。
请注意最终转置步骤,该步骤可以通过df.T
或df.transpose()
执行。
temp1 = {'a': 1, 'b': 2, 'c': 3}
temp2 = {'a': [1, 2], 'b':[2, 3], 'c':[3, 4]}
print(pd.DataFrame.from_dict(temp1, orient='index').T)
a b c
0 1 2 3
print(pd.DataFrame.from_dict(temp2, orient='index').T)
a b c
0 1 2 3
1 2 3 4