2017-05-16 43 views
2

我使用Spark 2.1和Python 2.7.12。如何用DataFrame中的具体时间戳填充没有值?

假设如下:

from pyspark.sql.functions import * 
import timestamp 

data = [Row(time=datetime.datetime(2017, 1, 1, 0, 0, 0, 0)), Row (time=datetime.datetime(1980, 1, 1, 0, 0, 0, 0)), Row(time=None) ] 

df = spark.createDataFrame(data) 

如何使用df.fillna({'time': datetime.datetime(1980, 1, 1, 0, 0, 0, 0)})填写null值/ s的具体时间?

回答

1

您可以​​3210尝试:

from pyspark.sql.functions import * 
default_time = datetime.datetime(1980, 1, 1, 0, 0, 0, 0) 
result = df.withColumn('time', coalesce(col('time'), lit(default_time))) 

或者,如果你想保持与fillna,你需要通过deafult值作为字符串,以标准格式:

from pyspark.sql.functions import * 
default_time = '1980-01-01 00:00:00' 
result = df.fillna({'time': default_time}) 
相关问题