pyspark 使用余弦函数创建新列

muk1a3rh  于 2023-05-21  发布在  Spark
关注(0)|答案(2)|浏览(116)

我有table。我需要创建一个新列,它将是从原始列中取余弦的结果。
| 色谱柱A|
| --------------|
| 十个|
| 二十|
我尝试了以下选项
import numpy as np import pyspark.sql.函数为F
df =(df .withColumn('new ',np.cos(F.col('Column A))))
与此同时,我收到了以下错误:
“ufunc的循环不支持没有可调用sin方法的Column类型的参数0”

xuo3flqw

xuo3flqw1#

尝试使用**cos函数代替numpy**函数。
要使用numpy函数,您需要使用toPandas()函数将dataframe转换为pandas dataframe

Example:

from pyspark.sql.functions import cos
df.withColumn('new', cos(col("A"))).show()
ruarlubt

ruarlubt2#

使NumpyPyspark一起使用总是很麻烦,所以我建议使用math来计算余弦

import math
import pyspark.sql.functions as F
from pyspark.sql.functions import udf
from pyspark.sql.types import IntegerType, FloatType

df = spark.createDataFrame(
    [(10),
     (20)],
    IntegerType())

# Define a UDF to wrap the function call and define the return type
cosUDF = udf(lambda z: math.cos(z), FloatType())

df = (df .withColumn('new', cosUDF(F.col('value'))))

df.show()
+-----+----------+                                                              
|value|       new|
+-----+----------+
|   10|-0.8390715|
|   20|0.40808207|
+-----+----------+

相关问题