我有一个Pypark数据框 df1
. 其printschema()如下所示。
df1.printSchema()
root
|-- parent: struct (nullable = true)
| |-- childa: struct (nullable = true)
| | |-- x: string (nullable = true)
| | |-- y: string (nullable = true)
| | |-- z: string (nullable = true)
| |-- childb: struct (nullable = true)
| | |-- x: string (nullable = true)
| | |-- y: string (nullable = true)
| | |-- z: string (nullable = true)
| |-- childc: struct (nullable = true)
| | |-- x: string (nullable = true)
| | |-- y: string (nullable = true)
| | |-- z: string (nullable = true)
| |-- childd: struct (nullable = true)
| | |-- x: string (nullable = true)
| | |-- y: string (nullable = true)
| | |-- z: string (nullable = true)
df1.show(10,False)
----------------------------------------------------------------
|parent |
----------------------------------------------------------------
|[,[x_value, y_value, z_value], ,[x_value, y_value, z_value]] |
----------------------------------------------------------------
这个 df1.show()
显示childb和childd不为null。
我可以得到所有的子结构字段名,比如(childa,childb,childc,childd)。
而且我只想得到那些不为null的子结构字段名。
下面的方法是将所有子结构字段名放入一个列表中,这满足了我上面的第一个要求。
spark.sql("""select parent.* from df1""").schema.fieldNames()
Output:
[childa, childb, childc, childd]
现在我只想得到那些不为null的子结构字段名。我只希望childb和childd进入一个列表。
预期产量: [childb, childd]
谁能帮我一下吗。
1条答案
按热度按时间laawzig21#
您可以使用过滤器和计数检查字段是否为空:
这给了