根据任何列的null存在从数据框删除记录



如何仅选择id中没有包含null的行

+---------+------+-----+
|AccountID|  Name|Price|
+---------+------+-----+
|       11|miguel| null|
|       11|luisa |   21|
|       12|  hary|   90|
|       13|  null|   99|
|       14|  marg|   90|
|       14|  null|   99|
+---------+------+-----+
DF.na.drop().show()
+---------+------+-----+
|AccountID|  Name|Price|
+---------+------+-----+
|       11|luisa |   21|
|       12|  hary|   90|
|       14|  marg|   90|
+---------+------+-----+

na.drop()删除所有在DataFrame的任何列上具有空值的行。我想知道如何删除其他具有AccountID 11的记录。如果某个特定AccountID的任何列/记录中存在null,则删除该AccountID的所有记录

在这种情况下,输出应该只有AccountID 12。

11和14个AccountID的值为空。

+---------+------+-----+
|AccountID|  Name|Price|
+---------+------+-----+
|       12|  hary|   90|
+---------+------+-----+

解释一下您的问题,您希望只选择具有id且没有包含null的行。

// select rows which have a null
val idsWithNulls = DF.filter(col("Name").isNull || col("Price").isNull)
// based on those ids remove 'bad' ids
DF.join(idsWithNulls, Seq("AccountId"), "left_anti")

结果将是:

+---------+----+-----+
|AccountId|Name|Price|
+---------+----+-----+
|       12|hary|   90|
+---------+----+-----+

Try withdf.na.drop()

例子:

df.show()
//+---+----+----+
//| id|name|dept|
//+---+----+----+
//|  1|   a|null|
//|  2|null|   a|
//|  4|   d|   c|
//+---+----+----+
df.na.drop().show()
//+---+----+----+
//| id|name|dept|
//+---+----+----+
//|  4|   d|   c|
//+---+----+----+

df.na.drop ()接受

  • all(删除所有列值为空)。
  • any(删除任何列值为null)参数

df.na.drop("any").show()
//+---+----+----+
//| id|name|dept|
//+---+----+----+
//|  4|   d|   c|
//+---+----+----+
df.na.drop("all").show()
//+---+----+----+
//| id|name|dept|
//+---+----+----+
//|  1|   a|null|
//|  2|null|   a|
//|  4|   d|   c|
//+---+----+----+

相关内容

  • 没有找到相关文章

最新更新