有没有一种方法可以使用整数按位置引用Spark DataFrame列?
类似的Pandas DataFrame操作:
df.iloc[:0] # Give me all the rows at column position 0
有没有一种方法可以使用整数按位置引用Spark DataFrame列?
类似的Pandas DataFrame操作:
df.iloc[:0] # Give me all the rows at column position 0
Python中的df.iloc
相当于collect。
PySpark示例:
X = df.collect()[0]['age']
或者X = df.collect()[0][1] #row 0 col 1
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]
Scala
val df = sc.parallelize(Seq((1, "foo", 2.0))).toDF()
df.select(df.columns.slice(0, 1).map(col(_)): _*)
注意:
Spark SQL不支持行索引,而且它很可能永远不会支持行索引,因此不可能在行维度上进行索引。
%python
retDF = (inputDF
.select(col(inputDF
.columns[0]))
.limit(100)
)
你可以在spark-shell中像这样使用。
scala>: df.columns
Array[String] = Array(age, name)
scala>: df.select(df.columns(0)).show()
+----+
| age|
+----+
|null|
| 30|
| 19|
+----+
collect()
之外该使用什么的人,可以使用take()
。 - Gabriel Fairtake()
返回一个列表作为结果,而在 Pandas 中使用iloc
可以得到一个数据框。 - Emil Haas