微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在pyspark中创建新列时出现问题

如何解决在pyspark中创建新列时出现问题

我有一个带有2个输入参数的python函数,进行一些计算并返回一些值

def func(column1,column2):
  if float(column1)!=1 and float(column2) !=0:
    return float(min(1,norm.cdf(norm.ppf(column1) - float(column2))/column1))
else:
   return 0

现在我已使用以下命令将此功能转换为Pyspark UDF:

udf_func = udf(func,FloatType())

现在我想在多列上使用此功能,所以我使用for循环遍历多列

这是我正在使用的数据框: a = [ (1、3、4、6、4), (2、2、2、4、7), (3,1,5,2,2), (4,4,3,6,5), ]

b = [“ column1”,“ column2”,“ column3”,“ column4”,“ column5”]

df_test = spark.createDataFrame(a,b) df_test.show()

+ ------- + ------- + ------- + ------- + ------- + | column1 | column2 | column3 | column4 | column5 | + ------- + ------- + ------- + ------- + ------- + | 1 | 3 | 4 | 6 | 4 | | 2 | 2 | 2 | 4 | 7 | | 3 | 1 | 5 | 2 | 2 | | 4 | 4 | 3 | 6 | 5 | + ------- + ------- + ------- + ------- + ------- +

for i in range(1,5):
  df = df.withColumn(f'col{i}',udf_func(f'column{i}','column5'))

我希望它能在Pyspark中工作,但是每次执行时都会出错。.请帮助,因为我是Pyspark的新手

错误: 第4行,在func中 TypeError:_()接受1个位置参数,但给出了2个

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。