2017-05-16 9 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) 

どのように特定の時間にnull値/秒を埋めるためにdf.fillna({'time': datetime.datetime(1980, 1, 1, 0, 0, 0, 0)})を使用する:

は以下と仮定しますか?

答えて

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}) 
関連する問題