我正在尝试使用 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)
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)
| 归档时间: |
|
| 查看次数: |
3752 次 |
| 最近记录: |