如何从键值不相等的字典中创建 pydatatable 数据框?

How to create a pydatatable dataframe from a dictionary which has unequal values across keys?

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

long_to_wide_dict = {
    'eggs':[3,5,6,9],
    'fruits':[1,2,3,4,5],
    'chicken':[5,10,2],
    'beef':[10,10],
    'bread':[5,4,3,2,1] 
}

我将这个字典传递给一个 Frame 对象

dt.Frame(long_to_wide_dict)

这里抛出一个错误

ValueError: Column 1 has different number of rows (5) than the preceding columns (4)

显然,当数据结构传递给Frame 时,每个键值的大小应该相等。那么,有没有像 Force 这样的选项可以将 NA 填充到具有较小值的键中,以便每个键的大小都相等。

您对此还有什么建议吗?

Frame构造函数中没有force参数,但dt.cbind()中有一个。因此,您可以首先为字典中的每个 key/value 创建单独的框架,然后使用 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]