假设我在pyspark中有一个数据框,如下所示:
+---------+---------+
| col1 | col2 |
+---------+---------+
|3.34567e4| 45876549|
+---------+---------+
|4.4781e8 | 7856549 |
+---------+---------+
我想保留col1
的科学计数法,但显示数字时保留小数点后两位。我也想将col2
更改为科学格式。因此结果应该如下:
+---------+---------+
| col1 | col2 |
+---------+---------+
| 3.35e4 | 4.59e7 |
+---------+---------+
| 4.48e8 | 7.86e6 |
+---------+---------+
我搜索了很多,但没有找到答案。
答案 0 :(得分:0)
您可以使用pyspark.sql.functions.format_string
,它允许您应用printf
样式格式来显示结果。
在这种情况下,您可以使用格式字符串"%.2e"
来格式化带有2个小数点的指数(科学)表示形式的浮点数。
例如:
from pyspark.sql.functions import col, format_string
df.select(*[format_string("%.2e", col(c).cast("float")).alias(c) for c in df.columns]).show()
#+--------+--------+
#| col1| col2|
#+--------+--------+
#|3.35e+04|4.59e+07|
#|4.48e+08|7.86e+06|
#+--------+--------+
请注意,结果列是字符串(而不是数字)。