Spark DataFrame相当于Pandas Dataframe` .iloc()`方法?

时间:2016-05-27 15:23:54

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

有没有办法按位置使用整数引用Spark DataFrame列?

类似Pandas DataFrame操作:

Member

4 个答案:

答案 0 :(得分:2)

不是,但你可以尝试这样的事情:

<强>的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]

<强> Scala的

val df = sc.parallelize(Seq((1, "foo", 2.0))).toDF()
df.select(df.columns.slice(0, 1).map(col(_)): _*)

注意

Spark SQL不支持,它不太可能支持行索引,因此无法跨行维度进行索引。

答案 1 :(得分:0)

您可以在spark-shell中这样使用。

scala>: df.columns  
Array[String] = Array(age, name)

scala>: df.select(df.columns(0)).show()
+----+
| age|
+----+
|null|
|  30|
|  19|
+----+

答案 2 :(得分:0)

收集了等同于Python df.iloc

PySpark示例:

X = df.collect()[0]['age'] 

X = df.collect()[0][1]  #row 0 col 1

答案 3 :(得分:0)

从 Databricks 上的 Spark 3.1.1 开始,只需要选择感兴趣的列并应用限制:

%python
retDF = (inputDF
    .select(col(inputDF
        .columns[0]))
    .limit(100)
)