Как показать столбец в фрейме данных PySpark в научной нотации в правильном формате - PullRequest
0 голосов
/ 18 января 2019

Предположим, что у меня есть фрейм данных в pyspark следующим образом:

+---------+---------+
|   col1  |  col2   |
+---------+---------+
|3.34567e4| 45876549| 
+---------+---------+
|4.4781e8 | 7856549 |
+---------+---------+

Я хочу сохранить col1 в научной записи, но покажу число с двумя десятичными знаками. Я также хочу изменить col2 на научный формат. Таким образом, результат должен быть следующим:

+---------+---------+
|   col1  |  col2   |
+---------+---------+
|  3.35e4 |  4.59e7 | 
+---------+---------+
|  4.48e8 |  7.86e6 |
+---------+---------+

Я много искал, но не нашел ответа.

1 Ответ

0 голосов
/ 18 января 2019

Вы можете использовать pyspark.sql.functions.format_string, что позволяет применять формат стиля printf для отображения результатов.

В этом случае вы можете использовать строку формата "%.2e" для форматирования числа с плавающей запятой в экспоненциальной (научной) записи с двумя десятичными знаками.

Например:

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|
#+--------+--------+

Помните, что результирующий столбец является строкой (а не числом).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...