Apache spark 如何使用pyspark填充日期到行之间的值?

Apache spark 如何使用pyspark填充日期到行之间的值?,apache-spark,pyspark,Apache Spark,Pyspark,我有一个具有id列、事件日期列和in_事件布尔值的数据集。 事件日期可能包含日期值 [[1,None],[2,'01-01-2018'],[3,None],[4,'01-02-2018']] 我需要为每个事件日期之间的所有行填写in_event列 结果将是: 1, None, False 2, 01-01-2018, True 3, None, True 4, 01-02-2018, True 你知道怎么用pyspark做吗 from pyspark.sql

我有一个具有id列、事件日期列和in_事件布尔值的数据集。 事件日期可能包含日期值

[[1,None],[2,'01-01-2018'],[3,None],[4,'01-02-2018']]
我需要为每个事件日期之间的所有行填写in_event列

结果将是:

1, None,        False
2, 01-01-2018,  True
3, None,        True
4, 01-02-2018,  True
你知道怎么用pyspark做吗

from pyspark.sql import SparkSession
from pyspark.sql.functions import rand, randn, udf, abs, signum
from pyspark.sql.types import (IntegerType, StructType, StructField, StringType, BooleanType)

spark = SparkSession.builder.appName('abc').getOrCreate()

column_schema = StructType([StructField("id", IntegerType()), StructField("event_date", StringType())])
data = [[1, None], [2, '01-01-2018'], [3, None], [4, '01-02-2018']]

data_frame = spark.createDataFrame(data, schema=column_schema)
data_frame = data_frame.withColumn("in_event", (signum(rand()-.2)+1).cast(BooleanType()))
data_frame.show()
输出

输出


不确定这是真的还是我遗漏了什么,但我想知道为什么随机数的符号会在这里起作用?因为原始数据并没有为布尔属性提供。signum和random帮助您从高斯分布生成布尔值不确定这是真的还是我遗漏了什么,但很高兴知道为什么随机数的signum会在这里做任何事情?因为原始数据没有为布尔属性提供。signum和random可以帮助您从高斯分布生成布尔值,但您认为您的数据提供的信息不够。可以找到以前的值并根据这些值做出决策,但是如果表中有多个事件,例如,`[[1,无],[2,'01-01-2018'],[3,无],[4,'01-02-2018'],[5,无],[6,'01-04-2018']``您如何判断哪两个日期对应于哪一个事件以及有多少事件?1、2、3或4?我认为您的数据提供的信息不足以做到这一点。可以找到以前的值并根据这些值做出决策,但是如果表中有多个事件,例如,`[[1,无],[2,'01-01-2018'],[3,无],[4,'01-02-2018'],[5,无],[6,'01-04-2018']``您如何判断哪两个日期对应于哪一个事件以及有多少事件?1、2、3或4?
| id|event_date|in_event|
+---+----------+--------+
|  1|      null|    true|
|  2|01-01-2018|    true|
|  3|      null|    true|
|  4|01-02-2018|   false|
+---+----------+--------+