【发布时间】:2017-03-29 08:03:37
【问题描述】:
我是 Python 和 PySpark 的新手。我在 PySpark 中有一个数据框,如下所示:
## +---+---+------+
## | x1| x2| x3 |
## +---+---+------+
## | 0| a | 13.0|
## | 2| B | -33.0|
## | 1| B | -63.0|
## +---+---+------+
我有一个数组: arr = [10, 12, 13]
我想在数据框中创建一个列 x4,以便它应该具有基于 x1 值作为索引的列表中的相应值。最终数据集应如下所示:
## +---+---+------+-----+
## | x1| x2| x3 | x4 |
## +---+---+------+-----+
## | 0| a | 13.0| 10 |
## | 2| B | -33.0| 13 |
## | 1| B | -63.0| 12 |
## +---+---+------+-----+
我已经尝试使用以下代码来实现:
df.withColumn("x4", lit(arr[col('x1')])).show()
但是,我收到一个错误:
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
有什么方法可以有效地实现这一目标吗?
【问题讨论】:
标签: python arrays pyspark spark-dataframe pyspark-sql