如何在pyspark中过滤字符串numpy数组列

k7fdbhmy  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(466)

我有一个Pypark数据框

import pandas as pd
foo = pd.DataFrame({'col':[['a_b', 'bad'],['a_a', 'good'],[]]})

我想过滤掉 'bad' 是在 listcol 我尝试先创建一个二进制列,然后在此列上进行筛选:

from pyspark.sql import functions as f
foo = foo.withColumn('at_least_one_bad', f.when(f.col("col").array_contains("bad"),f.lit(1)).otherwise(f.lit(0)))

但我犯了个错误
typeerror:“column”对象不可调用
有什么想法吗?

7nbnzgx9

7nbnzgx91#

您的语法有点不正确-请尝试以下代码:

import pyspark.sql.functions as f

foo2 = foo.withColumn('at_least_one_bad', f.array_contains('col', 'bad').cast('int'))

foo2.show()
+-----------+----------------+
|        col|at_least_one_bad|
+-----------+----------------+
| [a_b, bad]|               1|
|[a_a, good]|               0|
|         []|               0|
+-----------+----------------+

相关问题