我想知道是否有一种简洁的方法可以删除 SparkR 中的DataFrame列,例如 pyspark 中的df.drop("column_name")
。
这是我能得到的最接近的:
df <- new("DataFrame",
sdf=SparkR:::callJMethod(df@sdf, "drop", "column_name"),
isCached=FALSE)
答案 0 :(得分:1)
Spark&gt; = 2.0.0
您可以使用drop
功能:
drop(df, "column_name")
Spark&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
您可能还对subset
函数感兴趣,该函数根据给定条件返回DataFrame的子集。
我邀请您阅读官方文档here以获取更多信息和示例。
答案 1 :(得分:0)
利用选择:
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'))