有没有办法按位置使用整数引用Spark DataFrame列?
类似Pandas DataFrame操作:
Member
答案 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)
)