Python 如何从键之间具有不等值的字典创建pydatatable数据帧?

Python 如何从键之间具有不等值的字典创建pydatatable数据帧?,python,py-datatable,Python,Py Datatable,我试图在pydatatable中实现将较长列转换为较宽列的功能,在这个过程中,我遇到了一个字典问题,它的每个键都有不同的大小,如下面的代码所示 long\u to\u wide\u dict={ “蛋”:[3,5,6,9], ‘水果’:[1,2,3,4,5], “鸡”:[5,10,2], “牛肉”:[10,10], “面包”:[5,4,3,2,1] } 我将这个dict传递给一个Frame对象作为 dt.Frame(long_to_wide_dict) 在这里,它抛出了一个错误 ValueE

我试图在pydatatable中实现将较长列转换为较宽列的功能,在这个过程中,我遇到了一个字典问题,它的每个键都有不同的大小,如下面的代码所示

long\u to\u wide\u dict={
“蛋”:[3,5,6,9],
‘水果’:[1,2,3,4,5],
“鸡”:[5,10,2],
“牛肉”:[10,10],
“面包”:[5,4,3,2,1]
}
我将这个dict传递给一个Frame对象作为

dt.Frame(long_to_wide_dict)
在这里,它抛出了一个错误

ValueError:列1的行数(5)与前面的列(4)不同

很明显,当数据结构传递到帧时,每个键的值大小应该相等。那么,有没有像Force这样的选项来填充NA的to键,它的值较小,所以每个键的大小都相同


您还有什么建议吗?

框架构造函数中没有
force
参数,但是
dt.cbind()中有一个参数。因此,您可以首先为字典中的每个键/值创建单独的帧,然后使用
force=True
将它们绑定到单个帧中:

>>> dt.cbind([dt.Frame({k:v}) for k,v in long_to_wide_dict.items()], force=True)
   | eggs  fruits  chicken  beef  bread
-- + ----  ------  -------  ----  -----
 0 |    3       1        5    10      5
 1 |    5       2       10    10      4
 2 |    6       3        2    NA      3
 3 |    9       4       NA    NA      2
 4 |   NA       5       NA    NA      1

[5 rows x 5 columns]

哇,明白了。我想试试。感谢您的快速帮助,有了这些概念,我可以继续实现重塑DATATABLE列的功能(从宽到长,从长到宽)