python - 如何过滤掉所有包含符号“的行

标签 python pyspark

我想过滤掉“Col1”列中包含符号“的所有行。

Col1   Col2
11"    A
0!     Q
123456 A
252653 A
343535 A

预期结果:

Col1   Col2
123456 A
252653 A
343535 A

为此,我决定过滤掉所有非数字值:

def is_digit(value):
    if value:
        return value.isdigit()
    else:
        return False

is_digit_udf = udf(lambda value: is_digit(value), BooleanType())

df.filter(when(is_digit_udf(df["Col1"]))).show()

但是此代码失败并显示错误消息:

TypeError: when() missing 1 required positional argument: 'value'

最佳答案

when函数相当于sql中的case when。 因此,它不能直接在过滤器中使用。你可以试试这个:

from pyspark.sql.functions import lit
df.filter(is_digit_udf(df["Col1"]))==lit(True)).show()

关于python - 如何过滤掉所有包含符号“的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56936404/

相关文章:

python - Pyspark 将标准列表转换为数据框

python - sklearn log_loss 不同数量的类

python - 两次反转字典时没有得到相同的结果

python - SQLAlchemy 插入或更新示例

python - 用于建议新友谊的 Spark 计算

apache-spark - 如何将pyspark数据帧写入不同的Hadoop集群

hadoop - 如何使用 Spark Map Reduce 将一堆 Parquet 文件联合在一起?

python - pyspark 上使用 Spark 的代码

python - 如何查找图像中是否存在颜色

python - 如何逐步增加类次并进行训练?