我有一个由4列组成的DataFrame。让我们说它是A,B,C和D.我想要排除B列值为'NONE'的行。或者没有'没有'。我知道如何使用UDF执行此操作,但我很好奇如何在lambda匿名函数中执行此操作。
我的DataFrame是df,我的udf如下:
from pyspark.sql.functions import udf
def B_field(B_field_value):
if B_field_value == 'NONE' or B_field_value == 'NOTHING':
return True
udf_B = udf(B_field, BooleanType())
print df.filter(udf_CT(df['B'])).count()
我试图以lambda的方式做到这一点,我无法让它工作
df.select(df['CT']).filter(lambda x: x == 'NONE' or x == ''NOTHING)
我做错了什么?
答案 0 :(得分:0)
根据spark guide,格式为:
df.filter(df['age'] > 21).show()
在您的情况下,您可以使用以下过滤条件之一:
df.filter((df['CT'] != 'NOTHING') && df['CT'] != 'None'))
where
条件(filter
的别名):
from pyspark.sql.functions import col
df.where(
(col('CT') != 'NOTHING') &&
(col('CT') != 'NONE'))
或:
df.filter(col("CT").notEqual("NOTHING") && col("CT").notEqual("NONE"))