我想断言PySpark DataFrame列的值在所有行中是否都相同。例如,拥有下一个DataFrame
+----------+----------+
| A | B |
+----------+----------+
| 2.0| 0.0|
| 0.0| 0.0|
| 1.0| 0.0|
| 1.0| 0.0|
| 0.0| 0.0|
| 1.0| 0.0|
| 0.0| 0.0|
+----------+----------+
列“ A”不是常数,列“ B”是常数。
我尝试了两种方法:
1-检查stddev = 0:
df.select(stddev(col('B'))).collect()
2-获取不同的值:
df.select("B").distinct().collect()
第一种方法需要16分钟才能完成,第二种方法需要12分钟,但这只是一次执行,因此我不确定其重要性。
在PySpark中检查它的最佳方法是什么?
答案 0 :(得分:1)
stdev
也非常复杂,distinct
也是如此。
如果您的任务是检查特定列中的所有值是否都等于某个特定变量,那么我将尝试执行类似操作。
df.filter(col('B') != your_value).count() == 0
可能是您不知道该列的值的情况。但这很容易解决,只需检索“头”值并与之进行比较:
your_value = df.select('B').first()[0]