Итак, я хочу посчитать количество нулей в кадре данных по строкам.
Обратите внимание, что существует более 50 столбцов, я знаю, что могу сделать для этого оператор case / when, но я бы предпочел более аккуратное решение.
Например, подмножество:
columns = ['id', 'item1', 'item2', 'item3']
vals = [(1, 2, 0, None),(2, None, 1, None),(3,None,9, 1)]
df=spark.createDataFrame(vals,columns)
df.show()
+---+-----+-----+-----+
| id|item1|item2|item3|
+---+-----+-----+-----+
| 1| 2| 'A'| null|
| 2| null| 1| null|
| 3| null| 9| 'C'|
+---+-----+-----+-----+
После запуска кода желаемый результат:
+---+-----+-----+-----+--------+
| id|item1|item2|item3|numNulls|
+---+-----+-----+-----+--------+
| 1| 2| 'A'| null| 1|
| 2| null| 1| null| 2|
| 3| null| 9| 'C'| 1|
+---+-----+-----+-----+--------+
РЕДАКТИРОВАТЬ: не все ненулевые значения являются целыми.