gpt4 book ai didi

python - 关于在 pydatatable 数据框中使用 f 表达式选择所需字段的建议

转载 作者:行者123 更新时间:2023-12-04 09:59:15 24 4
gpt4 key购买 nike

我创建了一个数据表框架,

DT_EX = dt.Frame({'sales':[103.07, 47.28, 162.15, 84.47, 44.97, 46.97, 34.99, 9.99, 29.99, 64.98],
'quantity':[6, 2, 8, 3, 3, 3, 1, 1, 1, 2],
'customer_lifecycle_status':['Lead','First time buyer','Active customer','Defecting customer','
'Lead','First time buyer','Lead','Lead','Lead','Lead']})

现在我试图从数据表中只选择 2 个字段,
DT_EX[:, f.sales, f.quantity]

在这种情况下,它显示从数量到销售额的数据,而它应该以指定的顺序(销售额,数量)显示它们。在这里输出的另一个观察结果是-数量字段按升序排序。

将这种情况放在一边,现在我尝试将括号中的必填字段传递为
DT_EX[:, (f.sales,f.quantity)]

Here 它现在生成正确的输出,没有任何排序/困惑的字段

始终建议在括号中传递要选择的字段。

最后,我很想知道在第一种情况下发生了什么?
,请你解释清楚好吗?。

最佳答案

数据表的主要语法是

                            DT[i, j, by, ...]

也就是说,当你在方括号中写出一系列表达式时,第一个被解释为 i (行过滤器),第二个为 j (列选择器),第三个为 by (分组变量)。

通常,您会使用 by()函数来表达分组条件,但旧语法允许在 DT[] 中的第三位指定裸列名,它被解释为分组变量。这种用法现在被认为是不推荐使用的,并且最终可能会被删除,但至少现在它是这样。

因此,当你写 DT_EX[:, f.sales, f.quantity] , quantity列被解释为按条件分组(并且由于 j 没有任何归约操作,它本质上是一种排序)。使用分组变量的另一个效果是它被移动到结果框架的前面,这实质上意味着您将看到列(数量、销售额)以它们列出方式的“相反”顺序排列。

但是,如果您只需要从框架中选择 2 列,那么您需要确保这 2 列都在 j 内。在 DT[...] 的参数列表中的位置.这可以通过列表、元组或字典来完成:
DT_EX[:, [f.sales, f.quantity]]
DT_EX[:, (f.sales, f.quantity)]
DT_EX[:, {"SALES": f.sales, "QUANT": f.quantity}]

关于python - 关于在 pydatatable 数据框中使用 f 表达式选择所需字段的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61865860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com