В настоящее время у меня есть фрейм данных PySpark, в котором много столбцов, заполненных целочисленными значениями. Многие из этих столбцов имеют количество нулей. Я хотел бы найти способ суммировать, сколько столбцов имеет число больше нуля .
Другими словами, я хотел бы использовать подход, который суммирует значения по строке, где все столбцы для данной строки фактически являются логическими (хотя преобразование типа данных может не потребоваться). Несколько столбцов в моей таблице представляют собой дату и время или строку, поэтому в идеале у меня должен быть подход, который сначала выбирает цифры c столбцы.
Пример текущего кадра данных и требуемый вывод
+---+---------- +----------+------------
|USER| DATE |COUNT_COL1| COUNT_COL2|... DESIRED COLUMN
+---+---------- +----------+------------
| b | 7/1/2019 | 12 | 1 | 2 (2 columns are non-zero)
| a | 6/9/2019 | 0 | 5 | 1
| c | 1/1/2019 | 0 | 0 | 0
Pandas: В качестве примера, в pandas это может быть достигнуто путем выбора числовых столбцов c, преобразования в bool и суммирования с осью = 1. Я ищу эквивалент PySpark.
test_cols=list(pandas_df.select_dtypes(include=[np.number]).columns.values)
pandas_df[test_cols].astype(bool).sum(axis=1)