Python pandas 将字典dict转化为DataFrame时需避免的坑

先上结论:

以下是详细阐述。

有这样一个字典

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_frameSeries转化为 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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球