我有以下数据(您可以通过复制和粘贴来复制它):
让我们来看一下
from pyspark.sql import Row
l = [Row(value=True), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=None), Row(value=True), Row(value=None), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=None), Row(value=None), Row(value=None), Row(value=None), Row(value=True), Row(value=None), Row(value=True), Row(value=True), Row(value=True), Row(value=True), Row(value=True), Row(value=None), Row(value=None), Row(value=None), Row(value=True), Row(value=None), Row(value=True), Row(value=None)]
l_df = spark.createDataFrame(l)
让我们来看一下
l_df
的模式:l_df.printSchema()
root
|-- value: boolean (nullable = true)
现在我想使用 cube()
函数来计算 value
列中每个不同值的频率:
l_df.cube("value").count().show()
但我看到两种类型的null
值!
+-----+-----+
|value|count|
+-----+-----+
| true| 67|
| null| 100|
| null| 33|
+-----+-----+
为了验证我实际上没有两种类型的null
:
l_df.select("value").distinct().collect()
确实只有一种类型的null
:
[Row(value=None), Row(value=True)]
再次确认一下:
l_df.select("value").distinct().count()
它返回2
。
我还注意到len(l)
是100
,而第一个null
等于这个数字。为什么会发生这种情况?
系统信息:Spark 2.1.0,Python 2.7.8,[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
l_df.groupBy('value').count().show()
呢? - paultcube()
不起作用... - versatile parsley