先上结论:
以下是详细阐述。
有这样一个字典
d = {'a':1, 'b':2, 'c':4}
如果直接使用 pd.DataFrame(data=d)
,会出现以下的报错:
ValueError: If using all scalar values, you must pass an index
所以对于值都是 scalar
的字典转化为 DataFrame
的时候,需要指明 index
, 且注意 index
需要是一个数组。如下:
pd.DataFrame(data=d, index=['value'])
>>>
a b c
value 1 2 4
笔者经常忘记加上 index
,或者 index
忘记需要是数组,影响了写代码的效率。所以笔者推荐使用 pd.Series()
先将字典转化为 Series
再使用 to_frame
将 Series
转化为 DataFrame
,最后转置。如下:
pd.Series(data=d).to_frame().T
>>>
a b c
0 1 2 4
当然这个是看个人选择,下面的第二种情况则可能踩坑了。
比如我们有这样一个字典,
d = {'a':1, 'b':[2,1], 'c':4}
想转化如下的 DataFrame
a b c
0 1 [2, 1] 4
如果直接使用 pd.DataFrame
,会出现以下的结果:
pd.DataFrame(data=d)
>>>
a b c
0 1 2 4
1 1 1 4
可以看到 DataFrame
会按照长度最大的值进行填充。所以应该先用 pd.Series
:
pd.Series(data=d).to_frame().T
>>>
a b c
0 1 [2, 1] 4
Done!
Original: https://blog.csdn.net/weixin_39925939/article/details/121854635
Author: 每天都想躺平的大喵
Title: Python pandas 将字典dict转化为DataFrame时需避免的坑
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/674886/
转载文章受原作者版权保护。转载请注明原作者出处!