如何基于行值筛选datascience包Table结构数据,过滤含No的无效行
错误原因
你原先的写法不符合datascience包Table类where方法的调用规则:"B" != "No"是对两个字符串直接做等值判断,返回的是单个布尔值True,相当于给where传入了恒真条件,所以筛选不会生效,返回的还是原表。
正确实现方法
有两种常用写法可以实现需求:
- 方法1:使用
datascience内置的谓词函数
# 直接指定列名和匹配规则 test_new = test.where("B", are.not_equal_to("No"))
如果你当前环境没有自动导入谓词工具类,可在代码开头补充导入:from datascience import are
- 方法2:传入布尔数组做筛选
先取出B列的数组做等值判断得到布尔掩码,再传入where方法:
test_new = test.where(test.column("B") != "No")
执行上述任意一种写法后,test_new就会只保留B列不是No的行,符合你预期的A列取值为b、c、e、f、g的需求。
可选拓展操作
如果你后续需要对百分比数值做计算,可以把B列的百分号去掉转成整数格式:
test_new = test_new.with_column( "B", test_new.apply(lambda x: int(x.strip("%")), "B") )
内容的提问来源于stack exchange,提问作者sheep
相关产品推荐
相关产品推荐

