2015-09-18 81 views
1

刪除一個數據幀的專欄,我不知道是否有在刪除一個數據幀的專欄SparkR,如df.drop("column_name")pyspark一個簡潔的方法。在SparkR

這是最接近我可以得到:

df <- new("DataFrame", 
      sdf=SparkR:::callJMethod([email protected], "drop", "column_name"), 
      isCached=FALSE) 

回答

7

這可以通過將null分配給星火數據框柱來實現:

df$column_name <- NULL 

看到相關Spark JIRA ticket原來的討論。

1

可以使用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功能,根據給定的條件下返回數據框的子集。

我邀請您閱讀官方文檔here以獲取更多信息和示例。

+0

感謝Eliasah!我熟悉選擇,我正在尋找一種方法來放棄。 – zoltanctoth

+1

對不起。這是現在可用的。我們都知道sparkR仍然是一個「新」項目。 – eliasah

+1

我在JIRA找到那個下落是用R風格的方式實現的,看我的回答 – zoltanctoth

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