我可以看到今天刚刚发布了新版本的数据表,我正在尝试将其安装在一台 google colab 机器上。
!pip install datatable
Run Code Online (Sandbox Code Playgroud)
它显示错误如下:
Collecting datatable
Using cached https://files.pythonhosted.org/packages/04/0c/bff6497afcf95a3257c4168b95c8acab91c8ef234fe473eaf6689d582da1/datatable-1.0.0.tar.gz
Getting requirements to build wheel ... done
ERROR: Exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/pip/_internal/cli/base_command.py", line 153, in _main
status = self.run(options, args)
File "/usr/local/lib/python3.7/dist-packages/pip/_internal/commands/install.py", line 382, in run
resolver.resolve(requirement_set)
File "/usr/local/lib/python3.7/dist-packages/pip/_internal/legacy_resolve.py", line 201, in resolve
self._resolve_one(requirement_set, req)
File "/usr/local/lib/python3.7/dist-packages/pip/_internal/legacy_resolve.py", line 365, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "/usr/local/lib/python3.7/dist-packages/pip/_internal/legacy_resolve.py", line 313, in _get_abstract_dist_for
req, self.session, self.finder, self.require_hashes
File "/usr/local/lib/python3.7/dist-packages/pip/_internal/operations/prepare.py", line 224, in prepare_linked_requirement
req, self.req_tracker, finder, …Run Code Online (Sandbox Code Playgroud) 我有一个包含两列的数据框,如下所示,
DT_EX = dt.Frame({'film':['Don','Warriors','Dragon','Chicago','Lion','Don','Chicago','Warriors'],
'gross':[400,500,600,100,200,300,900,1000]})
Run Code Online (Sandbox Code Playgroud)
在第一种情况下,我想过滤电影是唐或芝加哥的观察,如下代码所示,
DT_EX[((f.film=="Don") | (f.film=="Chicago")),:]
Run Code Online (Sandbox Code Playgroud)
在一秒钟内,我将为 3 个值应用过滤器,
DT_EX[((f.film=="Don") | (f.film=="Chicago") | (f.film=="Lion")),:]
Run Code Online (Sandbox Code Playgroud)
在过滤超过 5 或 10 个值的情况下,我们应该为这些多个值做一个逻辑表达式,这肯定是一项耗时的任务。
是否有任何数据表方法可以更快地完成它?就像%in% %chin%在 R 中有一些过滤选项可用data.table。
我有一个小玩意儿
DF_TEST = tibble('country'=c('a','a','a','a'),
'id'=c(3,3,3,3),
'shop'=c('dmart','dmart','dmart','dmart'),
'beef'=c(23,NA,NA,NA),
'eggs'=c(NA,33,NA,NA),
'fork'=c(NA,NA,10,NA),
'veg'=c(NA,NA,NA,40))
Run Code Online (Sandbox Code Playgroud)
这里的输出为,
country id shop beef eggs fork veg
<chr> <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 a 3 dmart 23 NA NA NA
2 a 3 dmart NA 33 NA NA
3 a 3 dmart NA NA 10 NA
4 a 3 dmart NA NA NA 40
Run Code Online (Sandbox Code Playgroud)
我想通过保留一个侧面 NA 来转换这个 tibble 如下
country id shop beef eggs fork veg
<chr> <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 a 3 dmart …Run Code Online (Sandbox Code Playgroud) 我创建了一个数据表框架如下,
DT_EX = dt.Frame({'cid':[1,2,1,2,3,2,4,2,4,5],
'cust_life_cycle':['Lead','Active','Lead','Active','Inactive','Lead','Active','Lead','Inactive','Lead']})
Run Code Online (Sandbox Code Playgroud)
在这里,我有三个独特的客户生命周期,这些计数中的每一个都被发现为
DT_EX[:, count(), by(f.cust_life_cycle)]
Run Code Online (Sandbox Code Playgroud)
连同它,我有五个客户 ID,这些计数如下
DT_EX[:, count(), by(f.cid)]
Run Code Online (Sandbox Code Playgroud)
现在我想看看每个客户生命周期中存在多少个唯一客户 ID,
DT_EX[:, {'unique_cids':dt.unique(f.cid)}, by(f.cust_life_cycle)]
Run Code Online (Sandbox Code Playgroud)
它应该显示为潜在客户有 3 个唯一客户 ID,例如 (1,2,5),活动用户有 2 个唯一客户 ID (2,4),依此类推。
我无法按预期得到它,你能告诉我如何修复它吗?
仅供参考:我试图在 R data.table 框架上重现相同的内容,它的工作原理。
DT_EX[, uniqueN(cid), by=cust_life_cycle]
Run Code Online (Sandbox Code Playgroud) 我有一个数据框如下。
pl.DataFrame({'combine_address':[ ["Yes|#456 Lane|Apt#4|ABC|VA|50566", "Yes|#456 Lane|Apt#4|ABC|VA|50566", "No|#456 Lane|Apt#4|ABC|VA|50566"],
["No|#8495|APT#94|SWE|WA|43593", "No|#8495|APT#94|SWE|WA|43593", "Yes|#8495|APT#94|SWE|WA|43593"]
]})
Run Code Online (Sandbox Code Playgroud)
这里组合地址是一个列表类型列,其中包含大约 6 个管道(|)值的元素,这里我想使用列表中的分隔符(|)对每个元素进行分割。
这是预期的输出:
如果列表有 3 个元素,则拆分列将为 3*6=18
如果列表有 5 个元素,则拆分列将为 5*6=30,依此类推。
我有一个数据框,出生日期为
pl.DataFrame({'idx':[1,2,3,4,5,6],
'date_of_birth':['03/06/1990','3/06/1990','11/12/2000','01/02/2021','1/02/2021','3/06/1990']})
Run Code Online (Sandbox Code Playgroud)
在这里,我想比较每行的出生日期(格式:月/日/年),如果月份相等,例如 03 - 3、01 -1,则标记 yes。
有日期 03/06/1900、3/06/1990,它们通常是相同的。但在这里它们被视为不同的。如何弄清楚这些场景?
预期输出为: