pyspark:按内部值的长度过滤行

时间:2018-12-15 08:18:03

标签: pyspark

我有一个PySpark数据框,其中的列包含Python列表

id value
1 [1,2,3]
2 [1,2]

我要删除len列中列表的value小于3的所有行。

所以我尝试了:

df.filter(len(df.value) >= 3)

确实不起作用。

如何根据内部数据的长度过滤数据帧?

1 个答案:

答案 0 :(得分:2)

请参阅此link-

size()-返回存储在列中的数组或映射的长度。

from pyspark.sql.functions import size
myValues = [(1,[1,2,3]),(2,[1,2])]
df = sqlContext.createDataFrame(myValues,['id','value'])
df.show()
+----+---------+
|  id|    value|
+--------------+
|   1|  [1,2,3]|
|   2|    [1,2]|
+----+---------+
df = df.filter(size(df.value) >= 3).show()
+----+---------+
|  id|    value|
+--------------+
|   1|  [1,2,3]|
+----+---------+