首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于使用pydatatable中的f表达式选择所需字段的建议

关于使用pydatatable中的f表达式选择所需字段的建议
EN

Stack Overflow用户
提问于 2020-05-18 08:54:20
回答 1查看 44关注 0票数 1

我已经创建了一个datatable框架,

代码语言:javascript
运行
复制
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']})

现在,我尝试从datatable中只选择两个字段,

代码语言:javascript
运行
复制
DT_EX[:, f.sales, f.quantity]

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

将这种情况保持在一边,现在我已经尝试将所需的字段作为括号传递为

代码语言:javascript
运行
复制
DT_EX[:, (f.sales,f.quantity)]

在这里,它现在正在生成正确的输出,而不需要对字段进行任何排序/混乱。

总是建议传递要在括号中选择的字段.

最后,我想知道第一宗个案发生了甚麽事,可否请你解释清楚?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-18 16:43:49

datatable的主要语法是

代码语言:javascript
运行
复制
                            DT[i, j, by, ...]

也就是说,在方括号中写入表达式序列时,第一个表达式被解释为i (行筛选器),第二个表达式解释为j (列选择器),第三个表达式解释为by (组-by变量)。

通常,您将使用一个by()函数来表示一个组--按条件,但是旧的语法允许在DT[]的第三个位置指定一个裸列名,并且它被解释为一个group变量。这种使用现在被认为是不可取的,并可能最终被取消,但至少目前是这样的。

因此,在编写DT_EX[:, f.sales, f.quantity]时,根据条件将quantity列解释为一个组(而且由于j没有任何简化操作,因此它本质上是一种排序)。使用分组变量的另一个效果是,它被移动到结果帧的前面,这实际上意味着您将看到列(数量、销售额)按照列的“相反”顺序排列。

但是,如果只需要从一个框架中选择2列,那么就需要确保这2列都在j位置的DT[...]参数列表中。这可以通过列表、元组或字典来完成:

代码语言:javascript
运行
复制
DT_EX[:, [f.sales, f.quantity]]
DT_EX[:, (f.sales, f.quantity)]
DT_EX[:, {"SALES": f.sales, "QUANT": f.quantity}]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61865860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档