输入:
身份证 | 第一次约会 | 最后日期 | 价值观 |
---|---|---|---|
1 | 2023-12-10 | 2023-12-14 | 2,4,6,7,8 |
2 | 2024-01-12 | 2023-12-21 | 0,0,16,2,7,0,1,1,2,3 |
预期产出:
身份证 | 第一个日期和最后一个日期 | 价值 |
---|---|---|
1 | 2023-12-10 | 2 |
1 | 2023-12-11 | 4 |
1 | 2023-12-12 | 6 |
1 | 2023-12-13 | 7 |
1 | 2023-12-14 | 8 |
2 | 2024-01-12 | 0 |
2 | 2024-01-13 | 0 |
2 | 2024-01-14 | 16 |
2 | 2024-01-15 | 2 |
2 | 2024-01-16 | 7 |
2 | 2024-01-17 | 0 |
2 | 2024-01-18 | 1 |
2 | 2024-01-19 | 1 |
2 | 2024-01-20 | 2 |
2 | 2024-01-21 | 3 |
我能够按预期获取日期,但我无法在相应日期前面映射相应的值。
df.withColumn("FirstDateAndLastDate", explode(expr("sequence(to_date(FirstDate), to_date(LastDate), interval 1 day)")))
当我爆炸时,它会按行分隔数据,但不会分隔各个日期。
df.withColumn("new_value", explode(split(col("values"), ",")))
给定 start_date 和 end_date 的类型为 datetime。
def generate_dates(start_date, end_date, values):
current_date = start_date
date_values = []
while current_date <= end_date:
date_values.append((current_date, values[len(date_values) % len(values)]))
current_date += relativedelta.relativedelta(days=1)
return date_values