Eliminar columnas con valores cero de un dataframe

Tengo un data.frame:

SelectVar abcdefghijkl ll mnopqr 1 Dxa8 Dxa8 0 Dxa8 Dxa8 0 Dxa8 Dxa8 0 0 0 0 0 0 0 0 0 Dxc8 0 2 Dxb8 Dxc8 0 Dxe8 Dxi8 0 tneg tpos 0 0 0 0 0 0 0 0 0 Dxi8 0 

Me gustaría eliminar las columnas con valores cero en ambas filas del dataframe, por lo que arroja un dataframe de la siguiente manera:

 SelectVar abdeghq 1 Dxa8 Dxa8 Dxa8 Dxa8 Dxa8 Dxa8 Dxc8 2 Dxb8 Dxc8 Dxe8 Dxi8 tneg tpos Dxi8 

He intentado:

 SelectVar!=0 

que produce un dataframe True / False, y:

 SelectVar[, colSums(abs(SelectVar)) ! == 0] 

que produce un error

¿Cómo podría eliminar las columnas con valores cero en cada fila?

Casi lo tienes. Pon estos dos juntos:

  SelectVar[, colSums(SelectVar != 0) > 0] 

Esto funciona porque las columnas de factores se evalúan como números que son> = 1.

Pruebe también

 SelectVar[, !apply(SelectVar == 0, 2, all)] 

Esto fue tomado de aquí:

Eliminar todas las columnas con 0 de la matriz

Para eliminar cualquiera y todas las columnas que contienen solo ceros, simplemente pase su dataframe a la siguiente función:

 remove_zero_cols <- function(df) { rem_vec <- NULL for(i in 1:ncol(df)){ this_sum <- summary(df[,i]) zero_test <- length(which(this_sum == 0)) if(zero_test == 6) { rem_vec[i] <- names(df)[i] } } features_to_remove <- rem_vec[!is.na(rem_vec)] rem_ind <- which(names(df) %in% features_to_remove) df <- df[,-rem_ind] return(df) } 

Ejemplo:

 iris$Sepal.Width <- 0 new_df <- remove_zero_cols(iris) print(new_df) 

puedes probar algo como

  [row, column] = SelectVar.shape for j in range(column): if np.all(SelectVar.iloc[:, j] == 0): SelectVar = SelectVar.drop(SelectVar.columns[j], axis=1, inplace=True)