如何从键值不相等的字典中创建 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]
我正在尝试在 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]