对pyspark中的大小数求和,然后查看整个数字

对pyspark中的大小数求和,然后查看整个数字,pyspark,pyspark-sql,Pyspark,Pyspark Sql,我有以下数据帧: from pyspark.sql import functions as f from pyspark.sql import Window df = spark.createDataFrame(sc.parallelize([["gr1", "1663708559.71"], ["gr1", "123958300.14"],["gr2", "2006101145.31"]]), ["group_col", "numb"]) 我想有一个新的列,包含按组列分组的值的总和,但我没

我有以下数据帧:

from pyspark.sql import functions as f
from pyspark.sql import Window

df = spark.createDataFrame(sc.parallelize([["gr1", "1663708559.71"], ["gr1", "123958300.14"],["gr2", "2006101145.31"]]), ["group_col", "numb"])
我想有一个新的列,包含按组列分组的值的总和,但我没有readeble输出

df.withColumn("sum_gr", f.sum(df["numb"].cast("double"))).over(Window.partitionBy(df["group_col"]))).show(10, False)
在我计算总和之后,我必须将那个大值与另一个大值进行比较,即使它们相等,我也得不到匹配

我有以下结果: 对于gr1:总和为1.787666850001E9 我必须将这个值与1787666850000.143进行比较


在pyspark中处理大浮点数时,最好的方法是什么?如何将包含所有小数的整数转换为字符串?

尝试将
总和
转换为
十进制(38,3)
。请相应调整精度和刻度

以下是一个例子:

df.groupBy('group_Col').agg(F.sum('numb').cast('decimal(38,3)')).show()

#+---------+--------------------------------+
#|group_Col|CAST(sum(numb) AS DECIMAL(38,3))|
#+---------+--------------------------------+
#|      gr2|                  2006101145.310|
#|      gr1|                  1787666859.850|
#+---------+--------------------------------+

请检查
sum\u gr
列的
withColumn
语句的语法。在“cast”之后有两个额外的结束括号“)”。

有没有办法获得所有小数?不必设置刻度?我想显示所有的小数available@FlorentinaP-如果未使用十进制指定比例和精度,则默认情况下将使用十进制(10,0)。因此,您必须指定。从安全的角度看,你们可以将刻度扩大到更大的数值,如10或12。这不会有什么害处的.然后是另一个问题。。如何删除零?并具有一个包含最终值的字符串。