计算结构 Python 的项目



使用 python 和 pyspark,我正在创建一个新的结构数据帧。如何测试此结构是否没有嵌套字段,如果没有,则删除它们?

在下面的代码中,有两种结构颜色和时间。我想测试其中一个是否为 NULL,然后将其删除。法典

df1 = sqlCtx.createDataFrame([Row(Row(5, 9, Row(12((, Row(2,True((], schema(

df = df1.withColumn("data",
struct(
struct(
struct(struct(lit(2).alias("b3711"),
lit(2).alias("b3712")).alias("b371"),
(when(col("x2.field3").cast(IntegerType())== lit(1),
struct(struct(col("x1.field1").alias("dark"),).alias('Black')
,col("x1.field1").alias("cl"))).alias("Color")),
(when(col("x2.field3").cast(IntegerType())== lit(2),
struct(col("x1.field1").alias("Q1"),
col("x1.field1").alias("T1"))).alias("Times"))

).alias("b37")).alias("b3")
)).drop('x1','x2')
<DATA>
<T1>Numerical</T1>
<IT>Y</IT>
<color>
<black>v</black>
</color>
<Time/>
</DATA>

我在考虑用颜色和时间计算项目。我做了下面的行,但这不是我想要的。谁有想法

count(data.T1.Time)

使用dropna函数,您可以过滤、删除和创建没有空值的新数据帧。有关详细信息,请参阅文档,但基本上,您可以指定如何过滤和删除 null 值(即:所有列、任何列或列的子集(。在这种情况下,应删除任何具有 null 值的列,这将生成以下代码:

print(dataDF.count())
print(dataDF.dropna("any").count())

更新:要仅检查时间和颜色中的空值,您可以过滤子集:

newDF = dataDF.dropna("any", subset=["Color", "Time"])

文档链接:http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.dropna

希望这有帮助

最新更新