Это входные данные 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))))