Pyspark:选择具有其位置的特定列

时间:2018-06-18 13:15:22

标签: pyspark apache-spark-sql

我想知道如何在数据框中选择具有数字但不包含其名称的特定列?

像熊猫一样:

df = df.iloc[:,2]

可能吗?

2 个答案:

答案 0 :(得分:8)

您始终可以使用df.columns[n]然后select获取列的名称:

df = spark.createDataFrame([[1,2], [3,4]], ['a', 'b'])

选择位置n的列:

n = 1
df.select(df.columns[n]).show()
+---+                                                                           
|  b|
+---+
|  2|
|  4|
+---+

要选择列n以外的所有内容:

n = 1

您可以使用drop

df.drop(df.columns[n]).show()
+---+
|  a|
+---+
|  1|
|  3|
+---+

或者使用手动构造的列名称进行选择:

df.select(df.columns[:n] + df.columns[n+1:]).show()
+---+
|  a|
+---+
|  1|
|  3|
+---+

答案 1 :(得分:-1)

与mirkhosro相同的解决方案:

对于数据帧df,您可以使用df[n]选择第n列,其中n是该列的索引

示例:

df = df.filter(df[3]!=0)

将删除df的行,其中第四列的值为0。

请注意,您可以使用df.printSchema()

检查列