对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。这不会有什么害处的.然后是另一个问题。。如何删除零?并具有一个包含最终值的字符串。