如何仅选择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|
//+---+----+----+