这是Dataframe pyspark输入
| 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"])
这为我提供了填充空值的数据框,但是我的空值的精轧机ID将为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))))