我有一个PySpark数据框,其中的列包含Python列表
id value
1 [1,2,3]
2 [1,2]
我要删除len
列中列表的value
小于3的所有行。
所以我尝试了:
df.filter(len(df.value) >= 3)
确实不起作用。
如何根据内部数据的长度过滤数据帧?
答案 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]|
+----+---------+