scala - 如何在spark数据框中 "negative select"列

标签 scala apache-spark dataframe apache-spark-sql

我无法弄清楚,但我想这很简单。我有一个 Spark 数据框 df。该 df 具有“A”、“B”和“C”列。现在假设我有一个包含此 df 的列名称的数组:

column_names = Array("A","B","C")

我想以这样的方式执行df.select(),以便我可以指定选择哪些列。 示例:假设我不想选择“B”列。我试过了

df.select(column_names.filter(_!="B"))

但这不起作用,因为

org.apache.spark.sql.DataFrame cannot be applied to (Array[String])

所以,here它说它应该与 Seq 一起使用。不过,尝试

df.select(column_names.filter(_!="B").toSeq)

结果

org.apache.spark.sql.DataFrame cannot be applied to (Seq[String]).

我做错了什么?

最佳答案

Since Spark 1.4您可以使用drop方法:

斯卡拉:

case class Point(x: Int, y: Int)
val df = sqlContext.createDataFrame(Point(0, 0) :: Point(1, 2) :: Nil)
df.drop("y")

Python:

df = sc.parallelize([(0, 0), (1, 2)]).toDF(["x", "y"])
df.drop("y")
## DataFrame[x: bigint]

关于scala - 如何在spark数据框中 "negative select"列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31434886/

相关文章:

r - 通过列表的元素名称=数据框行号从列表中的数据框中分配值

scala - 从 scala 中的映射中删除空字符串

mongodb - 将 mongodb oplog.rs 加载到 spark dataframe

Scala:覆盖集合类型

hadoop - 在 docker 容器上的 zeppelin 中运行 spark 时找不到 lzo

python - DataFrame.write.parquet - HIVE 或 Impala 无法读取 Parquet 文件

python - Pandas 根据重复的索引数据框创建多个数据框

从列表提取中删除级别到数据帧

scala - 如何强制 IntelliJ IDEA 在依赖项更改后从 build.sbt 重新加载依赖项?

python - 如何删除 pyspark 中的特殊字符、unicode 表情符号?