![](/img/trans.png)
[英]Pandas get highest non-null value in each row, in dataframe with variable number of columns
[英]PySpark: Get first Non-null value of each column in dataframe
我正在处理不同的 Spark DataFrames
,它们在许多列中有很多 Null 值。 我想从每一列中获取任何一个非空值,以查看该值是否可以转换为日期时间。
我尝试执行df.na.drop().first()
以希望它会删除具有任何空值的所有行,而在剩余的DataFrame
,我将只获取具有所有非空值的第一行。 但是许多DataFrames
有很多包含大量空值的列,以至于df.na.drop()
返回空DataFrame
。
我还尝试查找是否有任何列都包含null
值,以便我可以在尝试上述方法之前简单地删除该列,但这仍然没有解决问题。 知道如何以有效的方式完成此操作,因为此代码将在巨大的DataFrames
上运行多次?
您可以将first
函数与ingorenulls
一起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')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.