【问题标题】:How to filter on a string numpy array column in pyspark如何过滤pyspark中的字符串numpy数组列
【发布时间】:2021-04-08 23:50:31
【问题描述】:

我有一个 pyspark 数据框

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' 对象不可调用

有什么想法吗?

【问题讨论】:

    标签: python apache-spark pyspark apache-spark-sql


    【解决方案1】:

    你的语法有点不对 - 试试下面的代码:

    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|
    +-----------+----------------+
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多