round() 函数不适用于 databricks-Python

mun*_*aba 3 python databricks

我正在尝试使用 databricks 中的 round() 函数将一些浮点值舍入为 2 位数字。然而,databricks python 并不像普通 python 那样工作。

如果有的话请帮我分析一下原因和解决办法。

lis = [-12.1334, 12.23433, 1.2343, -104.444]
lis2 = [round(val,2)  for val in lis]
print(lis2)
Run Code Online (Sandbox Code Playgroud)

TypeError: Invalid argument, not a string or column: -12.1334 of type <type 'float'>. For column literals, use 'lit', 'array', 'struct' or 'create_map' function.
Run Code Online (Sandbox Code Playgroud)

代码的图像证明

Blu*_*ken 6

function仅当您从spark.sql中的模块导入spark round函数时,这才可以重现

Spark round 函数需要一个字符串或一列。这解释了这个错误。

您可以为导入添加别名,例如import pyspark.sql.functions as F而不是from pyspark.sql.functions import *

您可以通过这种方式获取 originround方法。

import builtins
round = getattr(builtins, "round")
Run Code Online (Sandbox Code Playgroud)

然后你就可以执行

lis = [-12.1334, 12.23433, 1.2343, -104.444]
lis2 = [round(val, 2) for val in lis]
print(lis2)
Run Code Online (Sandbox Code Playgroud)