Ibis中数组map方法:表对象调用正常,下划线API调用报错
解决Ibis链式表达式中map方法调用报错的问题
问题原因
在链式表达式_.x.map(_ + 1)中,第二个_的作用域被解析为整个Table对象,而非列表字段x中的单个元素,因此会触发TypeError: unsupported operand type(s) for +: 'Table' and 'int'错误。
而直接使用t.x.map(_ + 1)可以正常运行,是因为t.x明确指向列表达式,此时map方法内的_会被正确绑定为该列列表中的元素。
解决方案
使用lambda表达式明确指定map方法的参数,以此绑定列表中的单个元素:
t.select(_.x.map(lambda elem: elem + 1))
这样lambda中的elem会指代列表字段x里的每个元素,与整数1相加的操作就合法了。
内容的提问来源于stack exchange,提问作者Ophir Yoktan
相关产品推荐
相关产品推荐

