将numpy数组附加到pyspark dataframe中

oxiaedzo  于 2021-05-16  发布在  Spark
关注(0)|答案(1)|浏览(692)

我需要将numpy数组附加到pyspark dataframe中。
结果如下,添加“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中转换,但没有成功。

6ie5vjzr

6ie5vjzr1#

改用自定义项:

import pyspark.sql.functions as F
from pyspark.sql.types import BooleanType
import numpy as np

func = F.udf(lambda x: bool(np.isclose(x, 117310.979016494)), BooleanType())
train4 = train3.withColumn('var38mc', func('var38'))

相关问题