Pyspark指定列的默认值

时间:2017-03-30 18:13:22

标签: python pyspark

我使用的是Spark 1.6.1和Python 2.7

我试图找出如何为数据框新添加的列指定默认值。在这种情况下,我有一个名为df1的数据框,其中包含

+-------+----+
|user_id| age|
+-------+----+
|  10000|  45|
|  10013|  40|
|  10021|Null|
|  10025|  50|
|  10051|  31|
+-------+----+

现在我想添加一个名为age2的新列,它只有一个简单的函数年龄+ 1

>>> df1 = df1.withColumn("age2", df1["age"]+1)

+-------+----+----+
|user_id| age|age2|
+-------+----+----+
|  10000|  45|  46|
|  10013|  40|  41|
|  10021|Null|Null|
|  10025|  50|  51|
|  10051|  31|  32|
+-------+----+----+

有没有办法可以为age2指定一个默认值,这样当年龄为null时,我可以返回类似于1的内容,而不是为age2返回null。

+-------+----+----+
|user_id| age|age2|
+-------+----+----+
|  10000|  45|  46|
|  10013|  40|  41|
|  10021|Null|   1|
|  10025|  50|  51|
|  10051|  31|  32|
+-------+----+----+

我知道我可以使用UDF来执行此操作,但我想知道是否有内置方法来执行此操作。

1 个答案:

答案 0 :(得分:0)

我建议您使用fillna功能。当前正在进行创建新列。接下来使用fillna function

填充空值
>>> df1 = df1.withColumn("age2", df1["age"]+1)
>>> df1 = df1.na.fill({'age2': 1})