round()函数不适用于databricks Python

round()函数不适用于databricks Python,python,databricks,Python,Databricks,我试图使用DataRicks中的round()函数将一些浮点值舍入为2位。但是,databricks python的工作方式与普通python不同 如果有的话,请帮我解释原因和解决办法 lis = [-12.1334, 12.23433, 1.2343, -104.444] lis2 = [round(val,2) for val in lis] print(lis2) TypeError:参数无效,不是类型为:-12.1334的字符串或列。对于列文字,请使用“lit”、“array”、“

我试图使用DataRicks中的round()函数将一些浮点值舍入为2位。但是,databricks python的工作方式与普通python不同

如果有的话,请帮我解释原因和解决办法

lis = [-12.1334, 12.23433, 1.2343, -104.444]
lis2 = [round(val,2)  for val in lis]
print(lis2)

TypeError:参数无效,不是类型为:-12.1334的字符串或列。对于列文字,请使用“lit”、“array”、“struct”或“create_map”函数。
试试这个:

lis = [-12.1334, 12.23433, 1.2343, -104.444]
list_em = []
for row in lis:
    list_em.append(round(row,2))
print(list_em)

[-12.13, 12.23, 1.23, -104.44]
试试这个:

lis = [-12.1334, 12.23433, 1.2343, -104.444]
list_em = []
for row in lis:
    list_em.append(round(row,2))
print(list_em)

[-12.13, 12.23, 1.23, -104.44]

我相信这是您正在应用的函数的源代码:

def round(col, scale=0):
    """
    Round the given value to `scale` decimal places using HALF_UP rounding mode if `scale` >= 0
    or at integral part when `scale` < 0.

    >>> spark.createDataFrame([(2.5,)], ['a']).select(round('a', 0).alias('r')).collect()
    [Row(r=3.0)]
    """
    sc = SparkContext._active_spark_context
    return Column(sc._jvm.functions.round(_to_java_column(col), scale))
def圆形(列,刻度=0):
"""
如果'scale`>=0,则使用半向上舍入模式将给定值舍入到'scale'小数位
或在“比例”小于0时位于整数部分。
>>>spark.createDataFrame([(2.5,)],['a'])。选择(舍入('a',0)。别名('r'))。收集()
[世界其他地区(r=3.0)]
"""
sc=SparkContext.\u活动\u spark\u上下文
返回列(sc._jvm.functions.round(_to_java_Column(col),scale))

很明显,它说的是在一列中传递,而不是十进制数。你导入了*?这可能会覆盖内置函数。

我相信这是您正在应用的函数的源代码:

def round(col, scale=0):
    """
    Round the given value to `scale` decimal places using HALF_UP rounding mode if `scale` >= 0
    or at integral part when `scale` < 0.

    >>> spark.createDataFrame([(2.5,)], ['a']).select(round('a', 0).alias('r')).collect()
    [Row(r=3.0)]
    """
    sc = SparkContext._active_spark_context
    return Column(sc._jvm.functions.round(_to_java_column(col), scale))
def圆形(列,刻度=0):
"""
如果'scale`>=0,则使用半向上舍入模式将给定值舍入到'scale'小数位
或在“比例”小于0时位于整数部分。
>>>spark.createDataFrame([(2.5,)],['a'])。选择(舍入('a',0)。别名('r'))。收集()
[世界其他地区(r=3.0)]
"""
sc=SparkContext.\u活动\u spark\u上下文
返回列(sc._jvm.functions.round(_to_java_Column(col),scale))

很明显,它说的是在一列中传递,而不是十进制数。你导入了*?这可能会覆盖内置函数。

这仅在您从spark.sql中的
函数
模块导入spark round函数时才可复制

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

您可以将导入别名为F
import pyspark.sql.functions,而不是pyspark.sql.functions import*

您可以通过这种方式获得origin
round
方法

import builtins
round = getattr(builtins, "round")
然后你就可以执行了

lis = [-12.1334, 12.23433, 1.2343, -104.444]
lis2 = [round(val, 2) for val in lis]
print(lis2)

这仅在从spark.sql中的
函数
模块导入spark round函数时才可复制

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

您可以将导入别名为F
import pyspark.sql.functions,而不是pyspark.sql.functions import*

您可以通过这种方式获得origin
round
方法

import builtins
round = getattr(builtins, "round")
然后你就可以执行了

lis = [-12.1334, 12.23433, 1.2343, -104.444]
lis2 = [round(val, 2) for val in lis]
print(lis2)

你好,问题很可能与名称空间冲突。我跑得差不多

from pyspark.sql.functions import *
其中包含函数。通过对其运行帮助,您可以轻松查看正在使用的回合:

help(round)
简单的解决方法是将pyspark函数指定给不同的名称空间

import pyspark.sql.functions as F
lis = [-12.1334, 12.23433, 1.2343, -104.444]
lis2 = [round(val,2)  for val in lis]
print(lis2)

[-12.13, 12.23, 1.23, -104.44]

你好,问题很可能与名称空间冲突。我跑得差不多

from pyspark.sql.functions import *
其中包含函数。通过对其运行帮助,您可以轻松查看正在使用的回合:

help(round)
简单的解决方法是将pyspark函数指定给不同的名称空间

import pyspark.sql.functions as F
lis = [-12.1334, 12.23433, 1.2343, -104.444]
lis2 = [round(val,2)  for val in lis]
print(lis2)

[-12.13, 12.23, 1.23, -104.44]


此代码不会产生声明的错误。请发布您的真实代码。为方便起见,无法重新创建错误。因此,代码必须在DataRicks笔记本中运行,而不是以普通python方式运行。正常的python方式将无任何错误地运行。问题在于基于databricks的python。这对您有帮助吗?此代码不会产生声明的错误。请发布您的真实代码。为方便起见,无法重新创建错误。因此,代码必须在DataRicks笔记本中运行,而不是以普通python方式运行。正常的python方式将无任何错误地运行。问题在于基于databricks的python。这对您有帮助吗?这根本无法解释问题。发布的代码操作甚至没有可复制的问题。这也不起作用。当我在databricks笔记本中运行时,round函数不起作用。你可以查看随附的图片校样。这根本不能解释问题。发布的代码操作甚至没有可复制的问题。这也不起作用。当我在databricks笔记本中运行时,round函数不起作用。您可以查看随附的图像校样。是的。我已经删除了所有进口的火花的东西。现在它开始工作了。这是一个round函数被重写的问题。谢谢,是的。我已经删除了所有进口的火花的东西。现在它开始工作了。这是一个round函数被重写的问题。谢谢你,工作很有魅力!谢谢。工作很有魅力!谢谢