Как можно преобразовать экспоненциальное значение столбца данных в pyspark в один формат, может быть строкой - PullRequest
0 голосов
/ 21 апреля 2019

Это входные данные pispark Dataframe

| Finishing_mill_id  | Position_float | Entry_Temp |
|--------------------|----------------|------------|
| 2015418529         | 0              | 1986.0     |
| 2015418529         | 1              | 1986       |
| 2015418529         | 2              | 1997.0     |
| 2015418529         | 3              | 1997       |
| 2015418529         | 4              | 2003.0     |
| null               | 5              | null       |
| null               | 6              | null       |
| null               | 7              | null       |
| null               | 8              | null       |

Это функция, которая вычисляет значение для моего нуля

def fill_with_mean(df,exclude=set()):
    stats = df.agg(*(avg(c).alias(c) for c in df.columns if c not in exclude))
    return df.na.fill(stats.first().asDict())
fill_with_mean(finish_mill_entry_filled,["position"])

Это дает мне Dataframe, заполняющий нулевые значения, но мой идентификатор Finishing Mill для нулевых значений будет finish_mill_id

| Finishing_mill_id  | Position_float | Entry_Temp |
|--------------------|----------------|------------|
| 2015418529         | 0              | 1986.0     |
| 2015418529         | 1              | 1986       |
| 2015418529         | 2              | 1997.0     |
| 2015418529         | 3              | 1997       |
| 2015418529         | 4              | 2003.0     |
| 2. 015418529E9     | 5              | 2005       |
| 2. 015418529E9     | 6              | 2006       |
| 2. 015418529E9     | 7              | 2007       |
| 2. 015418529E9     | 8              | 2008       |

Это сильно повредит мне, когда я присоединюсь к ID, мне нужно вернуться к 2015418529 Я пытался привести к десятичному, целое число ничего не работает

finish_mill_entry.dtypes
[('finish_mill_id', 'string'),
 ('sample', 'int'),
 ('position_float', 'double'),
 ('entry_temperature', 'float')]

Примечание: я видел некоторые связанные вопросы в SO и не получил большой помощи

Это то, что я пытался

finish_mill_entry_filled.withColumn('finish_mill_id',finish_mill_id.cast(DecimalType(18,2))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...