根据 Pyspark 中的条件确定日期数组是否包含特定日期
Determine if an array of Dates includes a certain date by condition in Pyspark
我有一个包含日期的数组列。我想要 return 一个 true false 列来搜索数组并确定数组是否包含某个条件之前的日期。
示例:
Date_Array
Location
ID
[4/22/21,3/21/21]
Dallas
5
[5/22/21,6/18/21]
Dallas
5
如果我的条件是 21 年 1 月 4 日之前的任何日期,结果应该是这样的:
Date_Array
Location
ID
bool_date
[4/22/21,3/21/21]
Dallas
5
TRUE
[5/22/21,6/18/21]
Dallas
5
FALSE
这可以用 Pyspark 或 Pandas 完成吗?
根据你的实际情况,你可以在这里自定义代码,但总体思路是获取数组的最大和最小日期并将其用于任何比较
from pyspark.sql import functions as F
(df
.withColumn('max_date', F.array_max('date_array'))
.withColumn('min_date', F.array_min('date_array'))
.withColumn('bool_date1', (F.col('min_date') < F.lit(datetime.fromisoformat('2021-04-01'))))
.show()
)
+------------------------+--------+---+----------+----------+----------+
|date_array |location|id |max_date |min_date |bool_date1|
+------------------------+--------+---+----------+----------+----------+
|[2021-04-22, 2021-03-21]|Dallas |5 |2021-04-22|2021-03-21|true |
|[2021-05-22, 2021-06-18]|Dallas |5 |2021-06-18|2021-05-22|false |
+------------------------+--------+---+----------+----------+----------+
我有一个包含日期的数组列。我想要 return 一个 true false 列来搜索数组并确定数组是否包含某个条件之前的日期。
示例:
Date_Array | Location | ID |
---|---|---|
[4/22/21,3/21/21] | Dallas | 5 |
[5/22/21,6/18/21] | Dallas | 5 |
如果我的条件是 21 年 1 月 4 日之前的任何日期,结果应该是这样的:
Date_Array | Location | ID | bool_date |
---|---|---|---|
[4/22/21,3/21/21] | Dallas | 5 | TRUE |
[5/22/21,6/18/21] | Dallas | 5 | FALSE |
这可以用 Pyspark 或 Pandas 完成吗?
根据你的实际情况,你可以在这里自定义代码,但总体思路是获取数组的最大和最小日期并将其用于任何比较
from pyspark.sql import functions as F
(df
.withColumn('max_date', F.array_max('date_array'))
.withColumn('min_date', F.array_min('date_array'))
.withColumn('bool_date1', (F.col('min_date') < F.lit(datetime.fromisoformat('2021-04-01'))))
.show()
)
+------------------------+--------+---+----------+----------+----------+
|date_array |location|id |max_date |min_date |bool_date1|
+------------------------+--------+---+----------+----------+----------+
|[2021-04-22, 2021-03-21]|Dallas |5 |2021-04-22|2021-03-21|true |
|[2021-05-22, 2021-06-18]|Dallas |5 |2021-06-18|2021-05-22|false |
+------------------------+--------+---+----------+----------+----------+