我的数据框格式如下:
+------+--------+
| id | values |
+------+--------+
| 1 |[1,2,3] |
+------+--------+
| 2 |[1,2,3] |
+------+--------+
| 3 |[1,3] |
+------+--------+
| 4 |[1,2,8] |
.
.
.
我想过滤并获取值列表列的长度等于或大于3的行。假设数据帧被调用df
我正在执行以下操作:
udf_filter = udf(lambda value: len(alist)>=3,BooleanType())
filtered_data = df.filter(udf_filter("values"))
当我跑步时:
filtered_data.count()
总是给出不同的结果。怎么可能呢?
注意:
df
来自另一个数据框,通过抽样(同一种子)df.count
总是给出相同的数字修改 我使用以下代码从原始表中获取示例:
df = df_original.sample(False, 0.01, 42)
即使我使用seed=42
如果我多次运行它也不会给出相同的结果。为了避免这种情况,我坚持使用df并且它总是给出相同的结果:
df.persist()
但我不明白的是seed
没有给出相同的样本行。可能是什么原因?