r语言 - 将数据帧的列拖放到 SparkR 中



我想知道是否有一种简洁的方法可以在SparkR中删除DataFrame的列,例如pyspark中的df.drop("column_name")

这是我能得到的最接近的:

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

这可以通过给Spark数据框架列赋NULL来实现:

df$column_name <- NULL

参见相关Spark JIRA票证的原始讨论

火花祝辞= 2.0.0

可以使用drop函数:

drop(df, "column_name")

火花& lt;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

您可能还对根据给定条件返回DataFrame子集的subset函数感兴趣。

我邀请你阅读这里的官方文档以获得更多信息和示例。

using select:

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'))

相关内容

  • 没有找到相关文章

最新更新