python - 将 python 函数转换为 pyspark lambda 函数
问题描述
我有一个如下的python函数
def func(a, b, c):
if c != 0:
return b/c * a
else:
return a
我想为此创建一个 lambda 函数 我已尝试创建一个如下所示的 lambda 函数
func = lambda x,y,z : y/z * x if z != 0 else z
但出现错误
TypeError:不支持的操作数类型/:'str'和'str'
这就是我打电话的方式
df= df.withColumn('new_col' ,func('x', 'y', 'z'))
即使我尝试将列转换为浮动,但仍然遇到问题。
注意:我不希望它被创建为 UDF,因为我正在处理一个庞大的数据集,而 UDF 需要花费大量时间,因此需要寻找 Lambda 函数
解决方案
你调用你的lambda
函数是错误的。
你传递 3 个字符串而不是数字变量,你应该传递x
//而不是调用字符串的值y
。z
您可能应该执行以下操作:
df= df.withColumn('new_col' ,func($'x', $'y', $'z'))
# Or
df= df.withColumn('new_col' ,func(df['x'], df['y'], df['z']))
但是,如果您不共享数据框结构,我无法确定。
密切注意错误消息。它清楚地表明您传递给函数的变量是字符串,您不能对字符串执行算术运算。
推荐阅读
- visual-studio-code - 如何在 vscode 中保存时运行 cargo fmt?
- linux - Bam 文件的排序运行非常缓慢
- python - 如何设置颜色条与其标签之间的距离
- html - 如何将卡片集中在引导列中?
- java - 如何将获取 x-csrf-token 的能力添加到此脚本?
- azure - Azure Terraform 策略错误“缺少订阅 - 请求没有订阅或有效的租户级资源提供程序”
- mongodb - 如何在 MongoDB 中存储用户特定的数据
- amazon-web-services - 使用 EC2 Instance Connect 的连接失败(基于浏览器的 SSH 连接)
- javascript - 播放时有奇怪行为的音频
- server - 我需要将媒体流从服务器转发到服务器吗?SFU和MCU相互连接的架构