PySpark - 如何删除 csv 输出中的科学记数法

fun*_*iki 2 python scientific-notation apache-spark pyspark

我有一个火花聚合,我想将结果输出到 csv,但我发现火花总是以科学记数法输出大量小数。我已经尝试过这个问题中提到的解决方案,但也没有奏效。

预期输出:

foo,avg(bar)
a,0.0000002
b,0.0000001
Run Code Online (Sandbox Code Playgroud)

实际输出:

foo,avg(bar)
a,2.0E-7
b,1.0E-7
Run Code Online (Sandbox Code Playgroud)

请参阅下面的示例:

foo,avg(bar)
a,0.0000002
b,0.0000001
Run Code Online (Sandbox Code Playgroud)

在 pyspark 外壳中:

foo,avg(bar)
a,2.0E-7
b,1.0E-7
Run Code Online (Sandbox Code Playgroud)

Bal*_*ala 5

>>> df1 = spark.createDataFrame([('a','2.0e-7'),('b','1e-5'),('c','1.0e-7')],['foo','avg'])
>>> df1.show()
+---+------+
|foo|   avg|
+---+------+
|  a|2.0e-7|
|  b|  1e-5|
|  c|1.0e-7|
+---+------+

>>> df1.select('foo','avg',format_string('%.7f',df1.avg.cast('float')).alias('converted')).show()
+---+------+---------+
|foo|   avg|converted|
+---+------+---------+
|  a|2.0e-7|0.0000002|
|  b|  1e-5|0.0000100|
|  c|1.0e-7|0.0000001|
+---+------+---------+
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法使用 format_string 删除尾随零? (2认同)