使用Python datatable触发NameError: name 'update' is not defined怎么解决
问题原因
update、count、by均为datatable库的内置专属函数,默认不会自动导入到Python的全局命名空间中,直接调用就会触发NameError。
解决方法
有两种可用的修改方案:
- 方案1:调用函数时增加
dt.前缀(无需额外导入函数,推荐,可避免命名冲突)
修改后的代码如下:
import numpy as np import pandas as pd import datatable as dt df = dt.Frame([[1, 1, 5], [2, 3, 6]], names=['A', 'B']) df[:, dt.update(filter_col = dt.count()), dt.by('A')]
运行后即可正常按A列分组,给原表新增统计每组行数的filter_col列。
- 方案2:显式导入需要用到的datatable内置函数
在导入库的代码段补充导入对应函数即可,原来的业务代码不需要修改:
import numpy as np import pandas as pd import datatable as dt from datatable import by, count, update df = dt.Frame([[1, 1, 5], [2, 3, 6]], names=['A', 'B']) df[:, update(filter_col = count()), by('A')]
补充说明
你之前执行help(update())报错也是同一个原因,如果需要查询相关函数的用法,直接调用help(dt.update)即可,不需要先执行函数。
内容的提问来源于stack exchange,提问作者ViSa
相关产品推荐
相关产品推荐

