我如何将数据框列pyspark指数值转换为一种格式可能是字符串

时间:2019-04-21 13:35:43

标签: python pyspark apache-spark-sql

这是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))))

0 个答案:

没有答案