Pyspark-用值填充空字符串

时间:2017-09-28 07:08:40

标签: pyspark

使用 Pyspark 我找到了如何用字符串替换空值(''),但它用字符串之间的字符串填充数据帧的所有单元格。也许系统会在非空单元格的字符串之间看到空值('')。

这些是初始数据帧的值:

app.get('contact-us',  (req, res, next) => {
    res.redirect(301, 'http://www.example.com/contact');
});

使用后:

+-----------------+-----+ 
|CustomerRelStatus|count| 
+-----------------+-----+ 
| Ανοιχτος        |  477| 
| Κλειστος        |   68| 
| 'γνωστο         |  291| 
|                 | 1165| 
+-----------------+-----+

它返回:

newDf = df.withColumn('CustomerStatus', regexp_replace('CustomerRelStatus', '', '-1000'))

还有其他办法吗?

2 个答案:

答案 0 :(得分:0)

我认为你在regexp_replace的第二个参数中缺少一个空格,所以也许试试这个:

newDf = df.withColumn('CustomerStatus', regexp_replace('CustomerRelStatus', ' ', '-1000'))

答案 1 :(得分:0)

希望这有帮助!

from pyspark.sql.functions import col, when

#sample data
df = sc.parallelize([['abc', '123'],
                     ['efg', '456'],
                     ['', '789']]).toDF(('CustomerRelStatus', 'count'))

#replace empty string with 'null' and then impute missing value, OR directly impute it with '-1000' in 'otherwise' condition
df = df.withColumn("CustomerStatus",
                   when(col('CustomerRelStatus') != '', col('CustomerRelStatus')).otherwise(None)).drop('CustomerRelStatus')
df = df.na.fill({'CustomerStatus': '-1000'})
df.show()

输出

+-----+--------------+
|count|CustomerStatus|
+-----+--------------+
|  123|           abc|
|  456|           efg|
|  789|         -1000|
+-----+--------------+


如果它解决了您的问题,请不要忘记告诉我们:)