Отбросьте столбец DataFrame в SparkR

Мне интересно, есть ли краткий метод для удаления столбца DataFrame в SparkR, например df.drop("column_name") в pyspark.

Это самое близкое, что я могу получить:

df <- new("DataFrame",
          sdf=SparkR:::callJMethod(df@sdf, "drop", "column_name"),
          isCached=FALSE)

person zoltanctoth    schedule 18.09.2015    source источник


Ответы (3)


Этого можно добиться, назначив NULL столбцу фрейма данных Spark:

df$column_name <- NULL

См. оригинальное обсуждение на соответствующей панели Билет Spark JIRA.

person zoltanctoth    schedule 19.09.2015

Искра >= 2.0.0

Вы можете использовать функцию drop:

drop(df, "column_name")

Искра ‹ 2.0.0

Вы можете использовать функцию select, чтобы выбрать то, что вам нужно, чтобы продолжать предоставлять набор столбцов с именами или выражениями столбца.

Использование:

## S4 method for signature 'DataFrame'
x$name
## S4 replacement method for signature 'DataFrame'
x$name <- value
## S4 method for signature 'DataFrame,character'
select(x, col, ...)
## S4 method for signature 'DataFrame,Column'
select(x, col, ...)
## S4 method for signature 'DataFrame,list'
select(x, col)
select(x, col, ...)
selectExpr(x, expr, ...)

Примеры:

select(df, "*")
select(df, "col1", "col2")
select(df, df$name, df$age + 1)
select(df, c("col1", "col2"))
select(df, list(df$name, df$age + 1))

# Similar to R data frames columns can also be selected using `$`
df$age

Вас также может заинтересовать функция subset, которая возвращает подмножества DataFrame в соответствии с заданными условиями.

Я предложил вам прочитать официальную документацию здесь для получения дополнительной информации и примеров.

person eliasah    schedule 18.09.2015
comment
Спасибо Элиас! Я знаком с select, ищу способ сбросить. - person zoltanctoth; 19.09.2015
comment
Мне жаль. Это то, что доступно сейчас. Мы оба знаем, что sparkR — все еще новый проект. - person eliasah; 19.09.2015
comment
Я обнаружил в JIRA, что drop реализован в стиле R, см. мой ответ - person zoltanctoth; 19.09.2015

Использование выбора:

drop_columns = function(df, cols) {
                    # Names of columns
                    col_names = df %>% colnames
                    # Filter out column names passed in
                    col_names = col_names[!(col_names %in% cols)]
                    # Select remaining columns
                    df %>% select(col_names)}

df %>% drop_columns(c('column1', 'column2'))
person CrossValidatedTrading    schedule 02.05.2017