【发布时间】:2016-09-26 00:16:15
【问题描述】:
有没有办法使用整数按位置引用 Spark DataFrame 列?
Analogous Pandas DataFrame 操作:
df.iloc[:0] # Give me all the rows at column position 0
【问题讨论】:
标签: pandas scala apache-spark dataframe apache-spark-sql
有没有办法使用整数按位置引用 Spark DataFrame 列?
Analogous Pandas DataFrame 操作:
df.iloc[:0] # Give me all the rows at column position 0
【问题讨论】:
标签: pandas scala apache-spark dataframe apache-spark-sql
Python df.iloc 的等价物是 collect
PySpark 示例:
X = df.collect()[0]['age']
或
X = df.collect()[0][1] #row 0 col 1
【讨论】:
不是真的,但你可以试试这样的:
Python:
df = sc.parallelize([(1, "foo", 2.0)]).toDF()
df.select(*df.columns[:1]) # I assume [:1] is what you really want
## DataFrame[_1: bigint]
或
df.select(df.columns[1:3])
## DataFrame[_2: string, _3: double]
斯卡拉
val df = sc.parallelize(Seq((1, "foo", 2.0))).toDF()
df.select(df.columns.slice(0, 1).map(col(_)): _*)
注意:
Spark SQL 不支持并且不太可能支持行索引,因此无法跨行维度进行索引。
【讨论】:
你可以在 spark-shell 中这样使用。
scala>: df.columns
Array[String] = Array(age, name)
scala>: df.select(df.columns(0)).show()
+----+
| age|
+----+
|null|
| 30|
| 19|
+----+
【讨论】:
从 Databricks 上的 Spark 3.1.1 开始,只需选择感兴趣的列并应用限制:
%python
retDF = (inputDF
.select(col(inputDF
.columns[0]))
.limit(100)
)
【讨论】: