【发布时间】:2021-03-19 01:08:39
【问题描述】:
我需要将 NumPy 数组附加到 PySpark 数据帧中。
结果需要是这样的,加上var38mc变量:
+----+------+-------------+-------+
| ID|TARGET| var38|var38mc|
+----+------+-------------+-------+
| 1.0| 0.0| 117310.9790| True|
| 3.0| 0.0| 39205.17000| False|
| 4.0| 0.0| 117310.9790| True|
+----+------+-------------+-------+
首先,我计算了一个近似为117310.979016494 值的数组。
array_var38mc = np.isclose(train3.select("var38").rdd.flatMap(lambda x: x).collect(), 117310.979016494)
输出是一个对象numpy.ndarray,像这样[True, False, True]
接下来,我尝试附加一个 Numpy 数组,该数组之前使用相同的 PySpark.Dataframe 的数据计算得出。
train4 = train3.withColumn('var38mc',col(df_var38mc))
但是我收到了这个错误:
AttributeError: 'DataFrame' object has no attribute '_get_object_id'
P.S.:我尝试将 numpy 数组转换为列表并在另一个 PySpark Dataframe 中没有成功。
【问题讨论】:
标签: python python-3.x apache-spark pyspark apache-spark-sql