Spark DataFrame是否等效于Pandas Dataframe`.iloc()`方法?

con*_*xyz 5 scala dataframe pandas apache-spark apache-spark-sql

有没有一种方法可以使用整数按位置引用Spark DataFrame列?

类似的熊猫DataFrame操作:

df.iloc[:0] # Give me all the rows at column position 0 
Run Code Online (Sandbox Code Playgroud)

Cha*_*uad 8

Python 的等价物df.iloc是 collect

PySpark 示例:

X = df.collect()[0]['age'] 
Run Code Online (Sandbox Code Playgroud)

或者

X = df.collect()[0][1]  #row 0 col 1
Run Code Online (Sandbox Code Playgroud)


zer*_*323 6

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

蟒蛇

df = sc.parallelize([(1, "foo", 2.0)]).toDF()
df.select(*df.columns[:1])  # I assume [:1] is what you really want
## DataFrame[_1: bigint]
Run Code Online (Sandbox Code Playgroud)

或者

df.select(df.columns[1:3])
## DataFrame[_2: string, _3: double]
Run Code Online (Sandbox Code Playgroud)

斯卡拉

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

注意

Spark SQL 不支持并且不太可能支持行索引,因此不可能跨行维度进行索引。