gpt4 book ai didi

python - PySpark:获取数据框中每列的第一个非空值

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:30 28 4
gpt4 key购买 nike

我正在处理不同的 Spark DataFrames,它们在许多列中有很多 Null 值。我想从每一列中获取任何一个非空值,以查看该值是否可以转换为日期时间。

我尝试执行 df.na.drop().first(),希望它会删除具有任何空值的所有行,以及剩余的 DataFrame,我将只获取包含所有非空值的第一行。但是许多 DataFrames 有很多包含大量空值的列,以至于 df.na.drop() 返回空 DataFrame

我还尝试查找是否有任何列具有所有 null 值,这样我就可以在尝试上述方法之前简单地删除这些列,但这仍然没有解决问题。知道如何以有效的方式完成此操作,因为此代码将在巨大的 DataFrames 上运行多次吗?

最佳答案

您可以将first 函数与ingorenulls 一起使用。假设数据如下所示:

from pyspark.sql.types import StringType, StructType, StructField

schema = StructType([
StructField("x{}".format(i), StringType(), True) for i in range(3)
])

df = spark.createDataFrame(
[(None, "foo", "bar"), ("foo", None, "bar"), ("foo", "bar", None)],
schema
)

您可以:

from pyspark.sql.functions import first

df.select([first(x, ignorenulls=True).alias(x) for x in df.columns]).first()
Row(x0='foo', x1='foo', x2='bar')

关于python - PySpark:获取数据框中每列的第一个非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43876822/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com